相关疑难解决方法(0)

右移C中的负数

我有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.

这种理解是否正确?

c bit-shift negative-number

26
推荐指数
3
解决办法
4万
查看次数

标签 统计

bit-shift ×1

c ×1

negative-number ×1