2011-08-12 48 views
-2

我剛剛發現了一種內聯方式,如果(A?B:C)在switch語句中無法按預期方式工作。C++內聯,如果在開關中失敗

其中A是一個布爾型,B和C都是不等於0的整數。當置於開關內部時,此語句的結果爲0。

我找到了一個stackoverflow post [1]這個行爲被提及但我找不到任何解釋爲什麼這不起作用,因爲我期望。這是什麼造成的?

例如:

int foo = 6; 

switch(foo) 
{ 
case 6: 
    return 10 + true ? 2 : 4; 
} 

[1] Benefits of inline functions in C++?

+9

請給出你的意思的代碼示例。 –

+6

這就是所謂的「條件運算符」或「三元運算符」,而不是「內聯if」。鏈接的討論是關於內聯函數,它們是無關的。發佈一些代碼。 –

+1

你的意思是'switch(a?b:c){...}'? – MSN

回答

4

這是無關switch。如果你想讓它像

(10 + true) ? 2 : 4. 

10 + (true ? 2 : 4) 

,那麼你需要將它寫這樣的

10 + true ? 2 : 4 

相當於。

+0

doh!我想知道爲什麼我在這個小例子中重新創建了這麼多麻煩。謝謝! – puccha

相關問題