2016-03-04 202 views
-3

我在CODEBLOCK上用C++編寫了一個簡單的程序。程序如下:爲什麼它會導致錯誤?

#include <iostream> 
using namespace std; 

int main() 
{ 
    int num = 09;    //ERROR: Invalid digit 9 in octal constant 
    cout << num << endl; 

    num = 08;    //ERROR: Invalid digit 9 in octal constant 
    cout << num << endl; 


    return 0; 
} 

此代碼與上一個相同。但我已經改變了價值,寫的NUM = 09,而不是015

我同意,如果我初始化(INT NUM = 015),它使輸出的八路是13

但在上述程序,我試圖初始化(int num = 09和num = 08)它給出錯誤,你可以看到。

首先,我想知道它爲什麼會產生一個ERROR以及如何?

其次是它背後的邏輯是什麼?

請給我合適的例子,如果有的話。

+6

它使八進制。 – AlexD

+2

來吧夥計們,這是一個合法的問題,可能很難谷歌。至少將其標記爲一個笨蛋而不是downvoting。 –

+2

@MattiVirkkunen我使用了「整數字面值前面的C++零」,答案包含在第一頁結果的google預覽中。 –

回答

6

前導零引起整數在C/C++中被解釋爲八進制數。十進制中的015是(1 * 8)+ 5 = 13。

+0

細節'0x9'具有前導'0',不是八進制。一些擴展包括'​​0b'作爲二進制前綴。 – chux

0

8位基因的常量是這樣定義的。 15 = 13 。

相關問題