本文介绍了带有负移位计数左移的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

到底发生了什么吗?

A<< -5

显然,这不右移。但是,这本书我读的规定:

Obviously it doesn't right shift. But the book I'm reading states:

在一台机器,这当然pression实际执行27位的左移

我的问题是;为什么?是什么原因导致27位的左移?而带有负移位计数换挡时究竟发生了什么?谢谢你。

My question is; why? What causes a left shift of 27 bits? And what exactly happens when shifting with a negative shift count? Thank you.

推荐答案

在右侧负整数是在C语言中未定义行为。

Negative integers on right-hand side is undefined behavior in the C language.

ISO 9899:1999 6.5.7按位移位运算符§3

ISO 9899:1999 6.5.7 Bit-wise shift operators §3

整数促销活动执行
  在每个操作数。的类型的
  其结果是,促进了
  左操作数。 如果该值
  右操作数为负

  大于或等于的宽度
  推广左操作数,
  行为是未定义

这篇关于带有负移位计数左移的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-12 10:37