2011-08-12 17 views
-2

我刚刚发现了一种内联方式,如果(A?B:C)在switch语句中无法按预期方式工作。C++内联,如果在开关中失败

其中A是一个布尔型,B和C都是不等于0的整数。当置于开关内部时,此语句的结果为0。

我找到了一个stackoverflow post [1]这个行为被提及但我找不到任何解释为什么这不起作用,因为我期望。这是什么造成的?

例如:

int foo = 6; 

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

[1] Benefits of inline functions in C++?

+9

请给出你的意思的代码示例。 –

+6

这就是所谓的“条件运算符”或“三元运算符”,而不是“内联if”。链接的讨论是关于内联函数,它们是无关的。发布一些代码。 –

+1

你的意思是'switch(a?b:c){...}'? – MSN

回答

4

这是无关switch。如果你想让它像

(10 + true) ? 2 : 4. 

10 + (true ? 2 : 4) 

,那么你需要将它写这样的

10 + true ? 2 : 4 

相当于。

+0

doh!我想知道为什么我在这个小例子中重新创建了这么多麻烦。谢谢! – puccha

相关问题