16位十六进制signed int值适用于此代码:
#include <stdio.h>
int main() {
while (1) {
int i;
if (scanf("%x", &i) != 1) break;
printf("%d %s -%d\n", i, (i == -i) ? "==" : "!=", i);
}
return 0;
}
除了“0”之外,必须有一些值返回“==”。
答案 0 :(得分:2)
8000
(hex)就是答案(在16位机器上)。
这是因为当你在2的补码中否定8000
时,你取补码加1,使得7FFF + 1
或回到8000
。在十进制表示中,数字为-32768
。
对于给定代码,如果 int
为给定编译器和处理器的16位,则为真。否则,i
需要声明为short int
或short
。