2016-01-24 64 views
-6
int main() 
{ 
    int a=1; 
    int b=2; 
    int c=a+++b; 
    cout<<"c"<<c<<endl; 
} 

c的值原來是。雖然,它給了我一個錯誤c = a ++ b。這裏發生了什麼?爲什麼c = a +++ b工作?一個C++程序。爲什麼此代碼有效?

+3

它被解析爲'a ++ + b',它是一個增量和一個加法。 –

+0

@chris你可能是對的。 –

+0

雖然C,[這個問題](http://stackoverflow.com/questions/5341202/why-doesnt-ab-work-in-c)是一個類似的概念。與此相關的一個關鍵詞是*最大蒙克*。也就是說,'a +++ b'是'a ++ + b',而不是'a + ++ b'。 – chris

回答

1

看起來像a是後增量然後加到b間距不好。例如a ++ + b。評估變量a然後遞增。這就是說a ++ b是無效的語法。

2

爲什麼a+++b「有效」和a++b不是C和C++語言解析定義方式的關鍵部分。這就是所謂的「貪婪」解析器。它將結合儘可能多的元素來產生一個有效的標記。

因此,鑑於它是一個貪婪的解析器,a++b變成a++ b,這是無效的。 a+++b變成a++ + b,這在語法上是有效的 - 這是否是你想要的是另一回事。如果你想寫a + +b,那麼你需要空格來分離令牌。

相關問題