我有C代码,我在其中执行以下操作.
int nPosVal = +0xFFFF; // + Added for ease of understanding
int nNegVal = -0xFFFF; // - Added for valid reason
Run Code Online (Sandbox Code Playgroud)
现在,当我尝试
printf ("%d %d", nPosVal >> 1, nNegVal >> 1);
Run Code Online (Sandbox Code Playgroud)
我明白了
32767 -32768
Run Code Online (Sandbox Code Playgroud)
这是预期的吗?
我能够想到类似的东西
65535 >> 1 = (int) 32767.5 = 32767
-65535 >> 1 = (int) -32767.5 = -32768
Run Code Online (Sandbox Code Playgroud)
也就是说,-32767.5四舍五入为-32768.
这种理解是否正确?