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

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

大家讲道理
大家讲道理

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

全員に返信(1)
刘奇

C++ 標準では、ディスプレイスメントの右オペランドが左オペランドのビット数と等しい場合、その演算により未定義の動作が発生すると規定されています。

5.8.1 オペランドは整数型または範囲外の列挙型でなければならず、整数の昇格が実行されます。右のオペランドが次の場合の動作は未定義です。負の値、またはプロモートされた左オペランドのビット長以上です。

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート