"DHT11 ? 0 : -40;" 这种语法是什么意思,叫什么?

"DHT11 ? 0 : -40;" What does this syntax mean and what is it called?

本文关键字:是什么 意思 什么 语法 DHT11      更新时间:2023-10-16

return model == DHT11 ? 0 : -40;

我相信这意味着"如果在0到-40之间,则返回模型",但我想要一个明确的答案。

它是三元运算符,等价于:

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

所以它与范围检查无关。

三元运算符产生一个值,也就是说,你也可以在赋值中使用它,比如:

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

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

意思是:"如果E1为真,则返回E2,否则返回E3"

这里有一个链接到cppreference,解释了更多内容。

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

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

在这种情况下,它检查model == DHT11的计算结果是否为true,如果为true,则给出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语句一样,压缩为一行。