什么 16 位十六进制有符号 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”之外,必须有一些值可以返回“==”。
最佳答案
8000
(十六进制)将是答案(在 16 位机器上)。
这是因为当你对 2 的补码中的 8000
求反时,你将补码加 1,所以就是 7FFF + 1
或者回到 8000
.在十进制表示中,数字是 -32768
。
在给定代码的情况下,如果对于给定的编译器和处理器,int
是 16 位,这将是正确的。否则,i
需要声明为 short int
或只是 short
。
关于c - 十六进制值等于负值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22083566/