![](/img/trans.png)
[英]Why does printf() print 21 instead of 11 when given a bitmask for 3?
[英]why does printf(“-%d”,025); print -21? (C)
這可能非常簡單,但我想知道為什么如果你有這個代碼它打印出-21?
#include <stdio.h>
main() {
printf("-%d",025);
}
025是八進制== 2 * 8 + 5 == 21十進制
在整數格式字符串占位符前面有一個減號,因此它打印-21
以0
開頭的整數文字是八進制(基數為8)。 所以025
是2*8 + 5
= 21
。
如果您使用帶語法突出顯示的編輯器,它可能會顯示此信息。
瑣事:因為這個原因, 0
本身實際上是八進制,而不是十進制!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.