在C ++中等同于Lua中的“and / or”?

在 Lua 中,你可以这样做:

foo = a and b or c and d or e

这等价于(至少我非常确定等价于):

local foo = nil
if a then
foo = b
elseif c then
foo = d
else
foo = e
end

在 C++ 中是否存在等价或类似的东西?

点赞
用户235825
用户235825

你可以使用三元运算符 ?:

foo = a ? b : c ? d : e;
2012-05-26 09:53:29
用户841108
用户841108

C 或者 C++ 中使用 && 表示 _然后_,使用 || 表示 否则

使用三元运算符 ?: 表示 _条件表达式_。

2012-05-26 09:53:36
用户382471
用户382471

这里有一个三目运算符。它的优先级很有趣,所以最好始终将其括起来。

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

请注意,这仅适用于bde可以转换为相同类型的情况。如果a是一个doubled是一个float,而e是一个int,则结果将始终转换为一个double

2012-05-26 09:53:42
用户1397268
用户1397268

我猜这就是你想要的:

foo = a ? b : (c ? d : e );
2012-05-26 09:53:46
用户298661
用户298661

并不是。这种方法在Lua中能够实现的主要原因是动态类型-在C++中你无法真正实现它。最接近的方法是三目运算符,但它有严重的限制。

2012-05-26 09:56:46