在visual c ++中切换案例帮助

时间:2017-05-03 08:43:00

标签: visual-c++

问题是

int i = 6, x = 11;

switch(i % 3 ? 0 : 1)
{
  case 0:  x /=2;  break;
  case 1:  x +=3; 
  case 2:  x *=4;
}
cout << "x = " << x;

所以我应该得到的答案是x = 5,但是,从答案脚本来看它应该是x = 56。 那是为什么?

1 个答案:

答案 0 :(得分:1)

两个陈述:

x +=3;

x *=4;

被执行。这就是为什么(有关条件运算符引用的here和switch语句的here)。

在表达式

i % 3 ? 0 : 1

i % 3是条件。作为整数值,如果等于零则认为是假,否则为真。在您的情况下,i的值为6,因此i % 3为0,因此条件为false,:之后的值将在switch语句中进行评估。

:之后的值为1,因此代码会跳转到case 1并执行x += 3。现在x 11 + 3 = 14

break之前没有case 2声明,因此执行只会继续x *= 4x会变为 14 * 4 = 56

相关问题