C语言 十六进制值等于负值



什么 16 位十六进制有符号 int 值适用于以下代码:

#include <stdio.h>
int main() {
  while (1) {
    int i;
    if (scanf("%x", &i) != 1) break;
    printf("%d %s -%dn", i, (i == -i) ? "==" : "!=", i); 
  }
  return 0;
}

必须有一些值返回"==",而不是"0"。

8000

十六进制)将是答案(在16位机器上)。

这是因为当你否定 2 补码中的8000时,你取补码加 1,所以这是7FFF + 1或回到8000。在十进制表示中,数字为 -32768

在给定代码的情况下,如果给定编译器和处理器的int为 16 位,则为真。否则,i将需要声明为 short int 或只是 short .

相关内容

  • 没有找到相关文章

最新更新