目录
一,介绍
在本教程中,我将介绍再ESP32 在arduino核心上如何使用C++条件运算符(三元运算符,此运算符需要三个操作数,并具有以下语法:
Expression1 ? Expression2 : Expression3
计算第一个表达式并隐式转换为布尔值。如果计算结果为true,则计算第二个表达式。如果它的计算结果为false,则会计算第三个表达式。
条件运算符的最终结果是第二个或第三个表达式的结果。
请注意,此操作数的行为与if else块非常相似,但它会导致更紧凑的语法。它对条件变量赋值特别有用。
二,硬件
- ESP32开发板
三,电路图
无
四,代码设计
我们将在Arduino设置函数中编写完整的代码。我们将首先打开一个串行连接来输出我们程序的结果。
Serial.begin(115200);
我们要做的第一件事是使用条件运算符根据表达式有条件地为变量赋值。
我们将首先声明一个整数,我们将用它作为条件运算符的第一个操作数进行比较。我们将这个变量称为cond。
int cond = 10;
现在,我们将宣布一个字符串变量,并为其分配一个值,如果COND大于5,另外,如果COND比5少于或等于我们将使用三元运算符,并考虑到在介绍部分中提到的语法做最佳的选择。
因此,三元运算符的第一个表达式将是我们要评估的条件: cond> 5。然后,在问号之后,我们指定在前一个条件为真时将被计算的表达式。由于我们正在进行赋值,因此我们只需输入要分配的字符串值。
现在,在冒号之后,我们将表达式应该在条件为false的情况下进行评估。同样,由于我们正在分配变量,因此我们将要分配的字符串值。
String result = cond > 5 ? "Greater than 5" : "Lesser or equal to 5";
之后,我们将打印结果。请注意,由于条件返回true,因此应分配的值是第一个字符串,更准确地说是“ 大于5 ”。
cond = 3;
result = cond > 5 ? "Greater than 5" : "Lesser or equal to 5";
Serial.println(result);
以前的用例涵盖了条件运算符的最常见用法之一。尽管如此,我们还将分析另一个有趣的用例。它对应于具有两个变量并使用条件运算符有条件地将某个值分配给一个或另一个。
对于此测试,我们的第一个操作数(条件)将只是一个布尔变量。我们将调用此变量条件,并通过为其赋值false来开始。
bool condition = false;
我们还将声明两个整数x和y,并使用零值初始化它们。
int x = 0, y = 0;
之后,我们将使用条件运算符对x或y进行任意值的条件赋值。在下面的代码中,由于第一个操作数的值为false,因此应将10分配给y,并且x应保持值0。
(condition ? x : y) = 10; Serial.println(x); Serial.println(y);
最后,我们将变量条件设置为true并将x和y重置为零。然后,我们将再次应用条件运算符。在这种情况下,x 应更新为10,y应保持值0。
condition = true; x=0; y=0; (condition ? x : y) = 10; Serial.println(x); Serial.println(y);
最终的源代码如下所示。它包含一些额外的打印件,以提高可读性。
void setup() {
Serial.begin(115200);
Serial.println();
int cond = 10;
String result = cond > 5 ? "Greater than 5" : "Lesser or equal to 5";
Serial.println(result);
Serial.println("----------------");
cond = 3;
result = cond > 5 ? "Greater than 5" : "Lesser or equal to 5";
Serial.println(result);
Serial.println("----------------");
bool condition = false;
int x = 0, y = 0;
(condition ? x : y) = 10;
Serial.print("X: ");
Serial.println(x);
Serial.print("Y: ");
Serial.println(y);
Serial.println("----------------");
condition = true;
x=0;
y=0;
(condition ? x : y) = 10;
Serial.print("X: ");
Serial.println(x);
Serial.print("Y: ");
Serial.println(y);
Serial.println("----------------");
}
void loop() {}
五,代码测试
要测试代码,只需编译它并使用Arduino IDE将其上传到您的设备。该过程完成后,打开IDE串行监视器。你应该得到类似于图1的输出。
可以看出,获得的结果与我们在代码部分中预测的结果相匹配。对于第一个用例,第一个句子被赋值给变量,因为表达式计算为true。在将表达式更改为false后,则分配了第二个句子。
对于第三个用例,由于表达式为假,因此分配了第二个变量(y),并且第一个变量(x)保持其原始值。当将表达式更改为true时,我们获得了反向结果。