我遇到了這樣的情況:這是如何工作在C + +?
if(true,false)
{
cout<<"A";
}
else
{
cout<<"B";
}
其實它寫出B.請問這個說法的作品?根據我的觀察,總是最後的數值。但是,這是什麼意思?
感謝
我遇到了這樣的情況:這是如何工作在C + +?
if(true,false)
{
cout<<"A";
}
else
{
cout<<"B";
}
其實它寫出B.請問這個說法的作品?根據我的觀察,總是最後的數值。但是,這是什麼意思?
感謝
根據http://www.cplusplus.com/doc/tutorial/operators/
逗號運算符(,)用於分隔兩個或多個包含的表達式w這裏只有一個表達式。當必須針對某個值評估一組表達式時,只考慮最右邊的表達式。
因此,例如考慮以下幾點:
int a, b;
a = (b=3, b+2);
b
被設置爲3,但等號運營商只關心下半年所以返回的實際值是5
。至於有用性?這是條件:)
這與Sajad LFC的答案基本相同,不同之處在於它沒有指出這個例子(用a和b以及其他東西)不是你自己的想法。另外,cplusplus.com不是標準。 – 2014-01-06 20:05:10
@ H2CO3他回答時,我明顯地看到答案,但你說得對:)乾杯。 – michael60612
@ michael60612:我首先回答是由H2CO3提供的 –
逗號運算符將運行無論是在逗號左側,丟棄它,然後運行無論是對操作者的右側。在這種情況下:
if (true, false)
總是會等同於if (false)
,所以它永遠不會運行if
條件,而且將永遠運行else
條件。
附註:不要這樣寫代碼。除了混淆代碼之外,它沒有任何用處。
逗號操作符
(,)是用來分離兩個或多個表達式 被包括其中僅一個表達預期。當必須針對某個值評估表達式的集合 時,只考慮最右邊的 表達式。例如,下面的代碼:a =(b = 3,b + 2);其中,
將首先將值3分配給b,然後將b + 2分配給變量 a。因此,在年底,變量將包含值5,而可變 B將包含值3
所以這裏
if(true,false)
{
}
評估爲if(false)
這是[逗號運算符](http://stackoverflow.com/questions/52550/what-does-the-operator-do-in-c)。 –
請參閱[逗號運算符](http://en.wikipedia.org/wiki/Comma_operator)。 – juanchopanza
編寫此代碼的人應該被禁止編寫軟件 – SomeWittyUsername