C++ 相当于Lua“;和/或;在C++;?

C++ 相当于Lua“;和/或;在C++;?,c++,lua,C++,Lua,在Lua中,您可以执行以下操作: foo = a and b or c and d or e 这相当于(至少我相当确定它相当于): 在C++中有什么类似或类似的东西吗?< /P> < P>你可以使用三元运算符? foo = a ? b : c ? d : e; 在C或C++中使用 & &代码>,然后使用 > 或< < /P> > 使用三元?:作为条件表达式这里有。它的优先级很有趣,所以总是用括号括起来是一个很好的做法 bool foo = ( a ? b : ( c ? d : e ) )

在Lua中,您可以执行以下操作:

foo = a and b or c and d or e
这相当于(至少我相当确定它相当于):


在C++中有什么类似或类似的东西吗?< /P> < P>你可以使用三元运算符<代码>?

foo = a ? b : c ? d : e;

在C或C++中使用<代码> & &代码>,然后使用<代码> > <代码>或< < /P> > 使用三元

?:
作为条件表达式

这里有。它的优先级很有趣,所以总是用括号括起来是一个很好的做法

bool foo = ( a ? b : ( c ? d : e ) )

请注意,只有当
b
d
e
可以减少到相同的类型时,这才有效。如果
a
double
d
float
e
int
,您的结果将始终转换为
double

,我想这就是您想要的:

foo = a ? b : (c ? d : e );

不是真的。在Lua工作的主要原因是因为动态类型化C++,你永远无法真正实现它。最接近的是三元运算符,但它有srs限制。

限制是什么?所有其他答案指向三元运算符。- 1这个问题是关于C++的。没有必要使用“&&”而不是“and”。
有什么好笑的地方:
的优先级?它比任何非赋值运算符都低,比所有赋值运算符都高,就是这样。因此,您可以很容易地省去外括号。更有趣的是它的关联性,这就是为什么你需要嵌套的
?:
s.@leftaroundabout之间的paren。它没有我期望的优先级。示例:优先级非常合理:编写类似
foo=c=='x'这样的东西很有意义?x:y
foo=a | | b?x:y
,因此它的优先级必须低于逻辑运算符和比较运算符。-另外,我需要收回我所说的关于结合性的内容:它是简单的正确的结合性,所以你也可以省略内部参数。虽然你应该用适当的缩进将表达式扩展到三行上,否则它就不可读了。虽然没有必要在这里添加括号,但我还是会这样做以提高清晰度——上面的代码只需要一堆单字母变量名就可以读了,但任何比给出的例子更复杂的事情都会很快变得难以管理。
foo = a ? b : (c ? d : e );