-2

(A?B:C)がswitchステートメントで期待どおりに機能しない場合、インラインで難しい方法を見つけました。

ここで、Aはブール値、BとCはどちらも0に等しくない整数です。このステートメントの結果は、スイッチ内に配置された場合は0になります。

この動作が言及されているstackoverflowの投稿[1]を見つけましたが、これが期待どおりに機能しない理由を説明できません。これを引き起こしているのは何ですか?

例えば:

int foo = 6;

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

[1] C ++のインライン関数の利点は?

4

1 に答える 1

4

これはとは関係ありませんswitch

10 + true ? 2 : 4

と同等です:

(10 + true) ? 2 : 4.

次のように動作させたい場合:

10 + (true ? 2 : 4)

その後、そのように書く必要があります。

于 2011-08-12T21:27:39.063 に答える