📅  最后修改于: 2020-12-27 03:34:00             🧑  作者: Mango
从基础到高级,运算符广泛用于Arduino编程中。它在每个编程概念(例如Java等)中都扮演着至关重要的角色。
运算符用于解决逻辑和数学问题。例如,根据一些模拟电压计算传感器给定的温度。
在Arduino中分类的运算符类型为:
下面列出了六个基本运算符负责在Arduino中执行数学运算:
Arduino中的Assignment运算符用于设置变量的值。它与数学中通常使用的等号(=)完全不同。
加法运算符用于将两个数字相加。例如,P +Q。
减法用于从另一个值中减去一个值。例如,P-Q。
乘法用于将两个数字相乘。例如,P *Q。
除法用于确定一个数除以另一个的结果。例如,P / Q。
模运算符用于计算一个数除以另一个数后的余数。
大多数运算符与数学中常用的运算符相似。
让我们借助两个示例来了解运算符。
范例1:
考虑下面的代码。
int b;
void setup ( )
{
Serial.begin( 9600 );
}
void loop ( )
{
b = 5 + 2;
Serial.println(b);
}
在上面的代码中,我们已将两个数字相加的结果分配给b,然后将其打印到控制台。
要输出,请单击工具栏上的“上载和串行监视器”按钮。
输出:7
范例2:
考虑下面的代码:
int d;
void setup ( )
{
Serial.begin( 9600 );
}
void loop ( )
{
d = 5 - 2;
Serial.println(d);
d = d + 3;
Serial.println(d);
}
在此,d = d +3不作为通常的数学运算来运算。它是赋值运算符,函数的右边首先被评估,并且赋值给等号的左边。
让我们考虑下图以便更好地理解。
输出:
3
6
同样,我们可以执行乘法,模和除法。 int变量将存储整数值。例如20/3 = 6。
如果要打印十进制值,则需要使用float而不是int 。
例如,
考虑下面的代码:
int b;
void setup ( )
{
Serial.begin( 9600 );
}
void loop ( )
{
b = 20.0 / 3; // decimal value is used to force the compiler to print decimal value.
Serial.println(b);
}
输出:6.66
让我们了解执行计算时Arduino考虑的操作顺序:
如果有多个相邻的操作,则会从左到右进行计算。
让我们看一个例子。
考虑下面的代码:
int c;
void setup ( )
{
Serial.begin( 9600 );
}
void loop ( )
{
c = 2 * 3 / (2 + 1) + 4;
Serial.println(c);
}
输出:
6
让我们了解上述输出是如何发生的。考虑下图:
复合运算符执行两个或多个计算。
如上所述,将右操作数的结果分配给左操作数。相同的条件将适用于以下所有复合运算符:
让我们考虑一个变量b 。
在这里,b = b +1。它称为增量运算符。
例如,b + =4。这意味着,b = b + 4。
在这里,b = b-1。它被称为减量运算符。
例如,b-=3。这意味着,b = b-3。
例如,b * =6。这意味着,b = b * 6。
例如,b / =5。这意味着,b = b / 5。
例如,b%=2。这意味着,b = b%2。
现在,让我们将上述运算符与两个变量b和c一起使用。
我们可以指定任何变量来代替b和c。
布尔运算符不是(!),逻辑与(&&)和逻辑或(||) 。
让我们详细讨论上述运算符。
如果条件中的两个操作数都为true,则条件的结果为true。
考虑以下示例:
if ( a = = b & & b = = c )
如果两个条件都成立,则以上陈述为正确。如果任何条件为假,则该语句为假。
如果条件中的任何一个变量为true,则条件的结果为true。
考虑下面的例子。
if ( a > 0 | | b > 0 )
如果以上条件(a> 0或b> 0)中的任何一个为真,则上述陈述为真。
它用于反转操作数的逻辑状态。
例如,! = 2。
当指定的操作数为FALSE时,NOT运算符将返回值1或TRUE。它还会反转指定表达式的值。
运算符用于比较与其他一个变量的值。
运算符列举如下:
小于运算符检查左操作数的值是否小于右操作数。如果满足条件,则该语句为true。
考虑下面的代码。
int b;
int c ;
void setup ( )
{
Serial.begin( 9600 );
}
void loop ( )
{
b = 3;
c = 5;
if ( b < 4 )
Serial.println(b);
if ( c < 4)
Serial.println( c);
}
输出3
在上面的代码中,如果两个语句中的任何一个正确,则将打印变量的相应值。在这里,只有第一个条件是正确的。因此,将打印b的值。
小于运算符检查语句左侧的值是否大于右侧。如果满足条件,则该语句为true。
例如,a> b。
如果a大于b,则条件为true,否则为false。
它检查两个操作数的值。如果值相等,则满足条件。
例如,a = = b。
上面的语句用于检查a的值是否等于b。
它检查两个指定变量的值。如果值不相等,则条件将正确并得到满足。
例如,! = b。
小于或等于运算符检查语句左侧的值是否小于或等于右侧的值。如果满足任一条件,则该语句为true。
例如,a <= b
它检查a的值小于或等于b。
大于或等于运算符检查语句左侧的值是否大于或等于该语句右侧的值。如果满足条件,则该语句为true。
例如,a> = b
它检查a的值大于或等于b。如果满足任一条件,则该陈述为真。
按位运算符在二进制级别运行。这些运算符非常易于使用。
有各种按位运算运算符。下面列出了一些受欢迎的运算符:
按位NOT运算符作为反转位的补充。
例如,如果b = 1,则NOT运算符将使b = 0的值。
让我们再看一个例子。
0 0 1 1 // Input or operand 1 ( decimal value 3)
1 1 0 0 // Output ( reverses the input bits ) decimal value is 12
如果两个输入相同,则输出为0;如果两个输入位不同,则输出为1。
例如,
例如,
1 0 0 1 // input 1 or operand 1
0 1 0 1 // input 2
1 1 0 0 // Output ( resultant - XOR)
如果“或”运算中的两个输入均为0,则输出为0。否则,输出为1。两个输入模式均为4位。
例如,
1 1 0 0 // input 1 or operand 1
0 0 0 1 // input 2
1 1 0 1 // Output ( resultant - OR)
如果“与”运算中的两个输入均为1,则输出为1。否则,输出为0。两个输入模式均为4位。
例如,
1 1 0 0 // input 1 or operand 1
0 1 0 1 // input 2
0 1 0 0 // Output ( resultant - AND)
左运算符移位右运算符定义的位数。
右运算符移位左运算符定义的位数。