【发布时间】:2017-01-24 16:44:16
【问题描述】:
所以我试图解释以下输出:
short int v = -12345;
unsigned short uv = (unsigned short) v;
printf("v = %d, uv = %u\n", v, uv);
Output:
v = -12345
uv = 53191
所以问题是:为什么当这个程序在二进制补码机器上运行时会产生这个精确的输出?
将值转换为unsigned short 时,哪些操作会导致此结果?
【问题讨论】:
-
对我来说很合适。你期待什么结果?
-
@SteveSummit 实际上这对我来说似乎不正确......根据port70.net/~nsz/c/c11/n1570.html#6.3.1.3p2 它应该是
53190。如果我没看错…… -
@EugeneSh。您没有正确阅读它;-)
-
@P.P.请解释这个是从哪里来的
-
@P.P.哦!没关系。我已经阅读了大约 10 次,直到正确为止。
标签: c unsigned twos-complement