C++中的移位问题
大家讲道理
大家讲道理 2017-04-17 15:37:48
0
1
983

在以下C/C++代码中,为什么结果还是41,根本没变
unsigned int d=41;
d=(d<<32)>>32;
cout<<" 结果"<<d;
所用电脑是win10 64位系统,VS2015和DEV-C++结果都是这样。
移位操作中还有哪些是值得我们注意的?

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

모든 응답(1)
刘奇

C 표준에서는 변위의 오른쪽 피연산자가 왼쪽 피연산자의 비트 수와 같을 때 연산이 정의되지 않은 동작으로 이어진다고 규정합니다.

5.8.1 피연산자는 정수 또는 범위가 지정되지 않은 열거형이어야 하며 결과 유형은 승격된 왼쪽 피연산자의 유형입니다. 오른쪽 피연산자가 다음과 같은 경우 동작은 정의되지 않습니다. 음수이거나 승격된 왼쪽 피연산자의 비트 길이보다 크거나 같습니다.

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿