你对这个C++表达式有什么期望?

max*_*axw 4 c++ syntax ternary-operator visual-studio-2008

  bool bSwitch  = true;
  double dSum = 1 + bSwitch?1:2;
Run Code Online (Sandbox Code Playgroud)

所以"dSum"是:

a)= 1
b)= 2
c)= 3

结果只是一丝不苟,我被砸了......

我正在使用VS2008 - >"Microsoft(R)32位C/C++ - Optimierungscompiler版本15.00.21022.08für80x86"

Kir*_*rov 7

operator+具有较高的优先级,比三元运算符?:.

所以,这相当于

double dSum = ( 1 + bSwitch ) ? 1 : 2;
Run Code Online (Sandbox Code Playgroud)

因此,你有dSum == 1.