2013-10-10 42 views
3

为什么以下两个表达式不会等价吗?三元运算符为布尔型Cast

  • (表达式)?真:假
  • (布尔)(表达式)
+4

还有另一个:'!!表达式' –

+6

我认为'expr?真:假'是一种反模式。不要使用它。使用隐式转换 - 或者,如果您绝对必须进行显式转换。但同样的道理,不要使用C风格的演员阵容,他们很麻烦,而且大多数人强烈不鼓励他们的使用。使用'static_cast'。 –

+2

@KonradRudolph作出答案,你会得到+1!您的评论比当前的答案更有用,无论如何... – codeling

回答

3

没有,这两个表达式是相同的。在两种情况下评估expression一次,并且在两种情况下整个表达类型为bool