【发布时间】:2011-10-26 03:37:27
【问题描述】:
我刚刚发现内联 if (A?B:C) 在 switch 语句中无法按预期工作。
其中 A 为布尔值,B 和 C 均为不等于 0 的整数。此语句的结果放在开关内时为 0。
我发现了一个 stackoverflow 帖子 [1],其中提到了这种行为,但我找不到任何解释为什么这不能像我预期的那样工作。这是什么原因造成的?
例如:
int foo = 6;
switch(foo)
{
case 6:
return 10 + true ? 2 : 4;
}
【问题讨论】:
-
请给出一个代码示例来说明您的意思。
-
这叫做“条件运算符”或“三元运算符”,而不是“内联 if”。链接的讨论是关于不相关的内联函数。贴一些代码。
-
你的意思是
switch (a?b:c) {...}? -
int foo = 6; switch(foo) { case 6: return 10 + true?2:4; }
-
该代码有什么“不起作用”的地方?
标签: c++ gcc switch-statement inline-if