為什么在32次以上使用時,32位整數的左位移位(<“)不像預期的那樣工作呢?當我編寫以下程序并使用GNU C+編譯器時,輸出是1我認為這是由編譯器執行的旋轉操作造成的。#include <iostream>int main(){
int a = 1;
std::cout << (a << 32) << std::endl;
return 0;}但從邏輯上說,如果比特寬度溢出,則輸出應該為0。怎么回事?密碼在第一位,http://ideone.com/VPTwj.
3 回答

慕無忌1623718
TA貢獻1744條經驗 獲得超4個贊
int
評論中對問題的回答

弒天下
TA貢獻1818條經驗 獲得超8個贊
E1<E2的值為E1左移E2位置;空出位為零填充位。如果E1具有無符號類型,則結果的值為E1×2^E2,減少的模比結果類型中可表示的最大值高。否則,如果E1具有符號類型和非負值,且E1×2^E2在結果類型中可表示,則為結果值; 否則,行為是未定義的。.
- 3 回答
- 0 關注
- 403 瀏覽
添加回答
舉報
0/150
提交
取消