[英]What does the following code fragment (in C) print?
以下代碼片段(在C中)打印什么?
int a = 033;
printf("%d", a + 1);
033
是八進制整數字面值 ,其值為8*3+3 = 27
。 你的代碼打印28
。
以0
開頭的整數文字是八進制。 如果它以0x
十六進制。
順便說一句,為了一個例子的緣故
int x = 08; //error
是一個編譯時錯誤,因為8
不是八進制數字。
我冒險瘋狂猜測說28
:)
28。
033是C中的八進制數,因為它具有前導“0”,這意味着它的值為十進制的27。
所以,27 + 1 = 28
這是一個提示:
試着看看這個例子:
#include<stdio.h>
main()
{
int a = 033;
printf("\nin decimal: %d", a+1);
printf("\nin hex: %x", a+1);
printf("\nin octal: %o", a+1);
}
這導致:
in decimal: 28
in hex: 1c
in octal: 34
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.