2011-08-12 6 views
-2

switch文で期待通りに(A?B:C)が機能しない場合、インラインで難しい方法を見つけました。スイッチで失敗した場合の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

「条件付き演算子」または「3項演算子」と呼ばれ、「インラインif」ではありません。リンクされた議論は、関連していないインライン関数に関するものです。いくつかのコードを投稿してください。 –

+1

'switch(a?b:c){...}'を意味しますか? – MSN

答えて

4

これはswitchとは何の関係もありません。

10 + true ? 2 : 4 

と同等です:あなたはそれはのように行動したい場合は

(10 + true) ? 2 : 4. 

10 + (true ? 2 : 4) 

、あなたはそのようにそれを記述する必要があります。

+0

dohと呼ばれています。なぜ私は小さな事例でこれを作り直すのがとても難しいのだろうと思っていました。ありがとうございました! – puccha

関連する問題