Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/124.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 两次左移操作得到了不同的答案_C++ - Fatal编程技术网

C++ 两次左移操作得到了不同的答案

C++ 两次左移操作得到了不同的答案,c++,C++,为什么即使在两种情况下将相同的数字移位32,两种操作的结果也会不同?移位操作的定义宽度仅小于整数类型的宽度。因此,您的程序调用未定义的行为,并且输出没有意义。如果您在编译过程中检查警告,您会得到: -1 0 警告:左移位计数>=类型的宽度[默认启用] 好吧,他们得到了不同的答案。你的问题是什么?@NickyC,这不是很明显吗?他们看起来应该给出相同的答案。@SchighSchagh要求的是一个明确的问题陈述,这可能会改善问题,但在当时并不存在。此外,有些人可能没有意识到这个明显的问题,因为未定

为什么即使在两种情况下将相同的数字移位32,两种操作的结果也会不同?

移位操作的定义宽度仅小于整数类型的宽度。因此,您的程序调用未定义的行为,并且输出没有意义。

如果您在编译过程中检查警告,您会得到:

-1 0
警告:左移位计数>=类型的宽度[默认启用]

好吧,他们得到了不同的答案。你的问题是什么?@NickyC,这不是很明显吗?他们看起来应该给出相同的答案。@SchighSchagh要求的是一个明确的问题陈述,这可能会改善问题,但在当时并不存在。此外,有些人可能没有意识到这个明显的问题,因为未定义的行为对他们来说可能太明显而不是一个问题。我明白了。非常感谢。不客气。别忘了用左边的复选标记将帖子标记为已回复。快乐编码!
-1 0
warning: left shift count >= width of type [enabled by default]
cout << (-1 << n) << " " << (-1 << 32);