我有一段 C 代码,其中我进行了以下操作。
int nPosVal = +0xFFFF; // + Added for ease of understanding
int nNegVal = -0xFFFF; // - Added for valid reason
现在当我尝试时
printf ("%d %d", nPosVal >> 1, nNegVal >> 1);
我得到
32767 -32768
这是正常的吗?
我能够思考一些如下的想法
65535 >> 1 = (int) 32767.5 = 32767
-65535 >> 1 = (int) -32767.5 = -32768
也就是说,-32767.5会四舍五入为-32768。
我的理解正确吗?
-5 // 4 = -2
。 - Aaron Franke