2014-01-06 72 views
3

我遇到了這樣的情況:這是如何工作在C + +?

if(true,false) 
{ 
    cout<<"A"; 
} 
else 
{ 
    cout<<"B"; 
} 

其實它寫出B.請問這個說法的作品?根據我的觀察,總是最後的數值。但是,這是什麼意思?

感謝

+2

這是[逗號運算符](http://stackoverflow.com/questions/52550/what-does-the-operator-do-in-c)。 –

+1

請參閱[逗號運算符](http://en.wikipedia.org/wiki/Comma_o​​perator)。 – juanchopanza

+2

編寫此代碼的人應該被禁止編寫軟件 – SomeWittyUsername

回答

2

根據http://www.cplusplus.com/doc/tutorial/operators/

逗號運算符(,)用於分隔兩個或多個包含的表達式w這裏只有一個表達式。當必須針對某個值評估一組表達式時,只考慮最右邊的表達式。

因此,例如考慮以下幾點:

int a, b; 
a = (b=3, b+2); 

b被設置爲3,但等號運營商只關心下半年所以返回的實際值是5。至於有用性?這是條件:)

+2

這與Sajad LFC的答案基本相同,不同之處在於它沒有指出這個例子(用a和b以及其他東西)不是你自己的想法。另外,cplusplus.com不是標準。 – 2014-01-06 20:05:10

+0

@ H2CO3他回答時,我明顯地看到答案,但你說得對:)乾杯。 – michael60612

+1

@ michael60612:我首先回答是由H2CO3提供的 –

2

逗號運算符將運行無論是在逗號左側,丟棄它,然後運行無論是對操作者的右側。在這種情況下:

if (true, false) 

總是會等同於if (false),所以它永遠不會運行if條件,而且將永遠運行else條件。

附註:不要這樣寫代碼。除了混淆代碼之外,它沒有任何用處。

3
http://www.cplusplus.com/doc/tutorial/operators/

逗號操作符

(,)是用來分離兩個或多個表達式 被包括其中僅一個表達預期。當必須針對某個值評估表達式的集合 時,只考慮最右邊的 表達式。例如,下面的代碼:a =(b = 3,b + 2);其中,

將首先將值3分配給b,然後將b + 2分配給變量 a。因此,在年底,變量將包含值5,而可變 B將包含值3

所以這裏

if(true,false) 
{ 

} 

評估爲if(false)