-2

我刚刚发现内联 if (A?B:C) 在 switch 语句中无法按预期工作。

其中 A 是布尔值,B 和 C 都是不等于 0 的整数。当放置在 switch 中时,此语句的结果为 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 回答