问题:
var =(条件)?如果条件一则设置值:条件二的设置值;
如果条件是某物,则变量的值将是某物。如果不是,则值将不同。基本上根据条件为变量分配值。这个解释有效吗?如果我正确理解的话,我需要知道这一点。
代码:
#include <iostream>
bool maxEntries()
{
int entries = 11;
bool users = (entries > 10) ? true : false;
return users;
}
int main(int argc, const char* argv[])
{
if(maxEntries())
{
std::cout << "Entries are greater than 10." << std::endl;
} else {
std::cout << "Entries are less than 10." << std::endl;
}
return 0;
}
.
答案 0 :(得分:1)
我想知道对三元运算符的这种解释是否有效。
该解释不是针对三元运算符,而是针对分配给三元运算符变量结果的表达式。三元运算符本身不止于此:
int a = 0, b = 0;
condition ? a = 1 : b = 2; // based on condition assign 1 to a or 2 to b
( condition ? a : b ) = 100; // based on condition assign 100 to a or b
以您的情况
condition ? value1 : value2; // result of ternary operator either value1 or value2 based on condition
然后使用结果分配给变量,因此您的解释不是针对三元运算符,而是针对使用三元运算符的整个表达式:
var = condition ? value1 : value2;
您可能会认为这是一个很好的选择,但是如果有人读了您的解释,他可能会认为分配给变量是三元运算符本身的一部分,但事实并非如此。例如:
function_call( condition ? value_on_true : value_on_false );
这至少也令人困惑:“如果条件是某物”,则应为“如果条件为true
,则第二个为(否则为条件false
)。