【问题标题】:Is this explanation of ternary operator valid? [closed]三元运算符的这种解释有效吗? [关闭]
【发布时间】:2019-03-04 22:53:33
【问题描述】:

问题:

  • 我想知道这个三元运算符的解释是否有效。

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;
} 

. 

【问题讨论】:

  • 我会说“return value if condition....”或“result of ternary expression if condition...”而不是“设置”,但这听起来不错……当您插入值并对其进行测试时,您是否发现您的解释是正确的?
  • bool users = (entries &gt; 10) ? true : false; 的另一种说法是bool users = entries &gt; 10;

标签: c++ operators conditional-statements


【解决方案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)第二个。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-02
    • 2015-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-27
    • 2020-04-14
    相关资源
    最近更新 更多