2010-12-07 109 views
3

以下代碼片段(在C中)是什麼打印?以下代碼片段(在C中)是什麼打印的?

int a = 033; 
printf("%d", a + 1); 
+0

我想你知道 – 2010-12-07 13:59:33

+1

你有你自己試了一下答案嗎?這通常是找出問題的最佳方式。問*爲什麼*是另一回事。 – 2010-12-07 14:04:02

+0

感謝科迪,我只是需要一個「快速回答」。感謝所有的答覆。 – Lucas 2010-12-07 14:15:35

回答

6

033八進制整數字面,其價值是8*3+3 = 27。您的代碼打印28

0開頭的整數字面值是八進制數。如果它開始在0x它是十六進制。

順便說一句,對於例如起見

int x = 08; //error 

是一個編譯時錯誤,因爲8不是一個八進制數字。

0

我會冒險胡亂猜測,說28 :)

0

28.

033是C中的八進制數,因爲它有一個前導「0」,這意味着它的值是十進制27。

所以,27 + 1 = 28

0

這裏有一個提示:

  • 在開始時的3位具有零是一個八進制。
  • 開頭是「0x」的2位數值是十六進制。

嘗試尋找這個例子:

#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 
相關問題