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”。
(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”。
最佳答案
常量177
和0177
是不同的值。前者是十进制,后者是八进制。
从C standard的6.4.4.1节开始:
八进制常数0177
等于十进制127。作为32位十六进制值,它表示为0x0000007f。在此值上使用~
运算符可得到0xffffff80。假设2的补数表示负数,则十进制为-128。
10-06 10:03