我一直想知道如何寫在C++語言兼容的"A ? B : C"
語法。如何使用條件運算符?
我覺得它的工作原理是這樣的:(僞代碼)
If A > B
C = A
Else
C = B
將任何老將C++程序員,請幫我嗎?
我一直想知道如何寫在C++語言兼容的"A ? B : C"
語法。如何使用條件運算符?
我覺得它的工作原理是這樣的:(僞代碼)
If A > B
C = A
Else
C = B
將任何老將C++程序員,請幫我嗎?
它的工作原理是這樣的:
(condition) ? true-clause : false-clause
它賦值操作最常用的,但它有其他用途。三元運算符?
是縮短if-else子句的一種方法,在其他語言中也稱爲直接if語句(例如,VB中的IIf(condition,true-clause,false-clause)
)。
例如:
bool Three = SOME_VALUE;
int x = Three ? 3 : 0;
相同
bool Three = SOME_VALUE;
int x;
if (Three)
x = 3;
else
x = 0;
我假設你的意思的東西像A = B? c:d,其中b是條件,c是b爲真時的值,d是b爲假時的值。
在C++中,如果有這部分沒有實際的。它被稱爲三元運算符。它的用法如下:<布爾語句>? <結果爲真>:<結果如果爲假>;對於你上面的例子就應該是這樣的:
C = A > B ? A : B;
這篇文章在維基百科上還討論了它: http://en.wikipedia.org/wiki/Ternary_operation
它的工作原理是這樣的:
expression ? trueValue : falseValue
這基本上意味着,如果expression
求值爲true,則trueValue將被返回或執行,否則將返回falsevalue或進行評估。
記住trueValue和falseValue將僅被評估並執行如果表達式分別是真還是假。這種行爲稱爲短路。
我想說的?是一個捷徑。然而,一些「硬核」程序員傾向於說長遠來說,所以在未來的情況下,人們可以輕鬆讀取和修改代碼。
例如,如果你寫
int a = b<c ? b : c;
一些人聲稱這是更清晰的寫:
if(b<c)
a = b;
else
a = c;
因爲在今後的案件中,人們可以抓住它。當然,一個簡單的b < c? b:c很容易被捕獲,但有時候會有複雜的操作,很難發現。
似乎沒有人提到條件運算符表達式的結果可以是C++中的L值(但不是C)。下面的代碼編譯的C++和運行良好:
int a, b;
bool cond;
a=1; b=2; cond=true;
(cond? a : b) = 3;
cout << a << "," << b << endl;
上述程序打印3,2
然而,如果a和b是不同類型的,它不會工作。下面的代碼給出了一個編譯器錯誤:
int a;
double b;
bool cond;
a=1; b=2; cond=true;
(cond? a : b) = 3;
cout << a << "," << b << endl;
是很簡單的 它的基本語法是: 表達式表達式2:表達式3;
如果表達式1成立,則表達式2將成立,否則成立表達式3成立。
例如:
hey=24>2?24:34;
這裏作爲條件是24位真值將被分配給它。 如果是假,則34將被分配給它
simply you can write this as
C =(A> B)A:B;
THIS IS SAME AS:
if(A>B)
C=A;
else
C=B;
此外,如果x是在你的例子用const int,三元版本將是編譯的唯一選擇。 – 2008-12-25 21:48:35
初始化三是不是更好? – 2008-12-26 07:41:40