“DHT11?0:-40;”这种语法意味着什么,它叫什么?

时间:2015-11-19 20:08:34

标签: c++ arduino

return model == DHT11 ? 0 : -40;

我认为这意味着“返回模型,如果介于0和-40之间”,但我想要一个确定的答案。

3 个答案:

答案 0 :(得分:6)

它是ternary operator,相当于:

if (model == DHT11)
    return 0;
else
    return -40;

因此它与检查范围无关。

三元运算符产生一个值,即你也可以在如下的赋值中使用它:

retval = model == DHT11 ? 0 : 40;
return retval;

答案 1 :(得分:0)

此运算符(E1?E2:E3)称为三元运算符,其中E是表达式。

表示:“如果E1为真,则返回E2,否则返回E3”

这是一个link到cppreference解释一下。

答案 2 :(得分:0)

如前所述,它被称为三元运算符。

三元运算符检查某些内容是否为真,如果是,则生成:之前的值。如果为false,则会产生:之后的值。

在这种情况下,它会检查model == DHT11的计算结果是否为真,如果是则为0。如果model == DHT11的计算结果为false,则它给出-40。然后将三元评估的值赋予return,退出函数,并返回0或-40。

其他例子:

std::string hi = "hi";
std::cout << (hi == "hi") ? "string hi contains \"hi\"." : "string hi does not contain \"hi\"." << "\n";

会打印:

string hi contains "hi".

一般语法:

bool ? value1 : value2

三元运算符就像if-else语句一样,压缩到一行。