This question already has answers here:
Why output of int 070 is 56 in C program? [duplicate]

(1个答案)



When displaying the value of variable “int a = 011”, I get 9. Why? [duplicate]

(3个答案)


3年前关闭。




在c中,为什么〜177产生-178,而〜0177产生-128?

我尝试打印之前和之后的值,但无法识别任何内容。我也无法解释这个话题。我正在阅读“The C Programming Language”。

最佳答案

常量1770177是不同的值。前者是十进制,后者是八进制。

C standard的6.4.4.1节开始:



八进制常数0177等于十进制127。作为32位十六进制值,它表示为0x0000007f。在此值上使用~运算符可得到0xffffff80。假设2的补数表示负数,则十进制为-128。

10-06 10:03