运算符
运算符是一个符号,它告诉编译器执行特定的数学或逻辑函数。C语言具有丰富的内置运算符,并提供以下类型的运算符:
- Arithmetic Operators 算术运算符
- Comparison Operators 比较运算符
- Boolean Operators 布尔运算符
- Bitwise Operators 位运算符
- Compound Operators 复合运算符
算术运算符
假设变量A为10,变量B为20,则:
运算符名称 | 运算符简写 | 描述 | 例子 |
---|---|---|---|
赋值运算符 | = | 将等号右侧的值存储在等号左边的变量中。 | A = B |
加号 | + | 两个操作两个操作数相加 | A + B将得出30 |
减号 | - | 从第一个操作数中减去第二个操作数 | A - B将得出-10 |
乘号 | * | 将两个操作数相乘 | A * B将得出200 |
除号 | / | 用分母除分子 | B / A将得出2 |
模数 | % | 模数运算符和整数除后的余数 | B%A将得出0 |
例子
void setup () {
Serial.begin(9600);
int a = 9,b = 4,c;
c = a + b;
Serial.print("a + b=");
Serial.println(c);
c = a - b;
Serial.print("a - b=");
Serial.println(c);
c = a * b;
Serial.print("a * b=");
Serial.println(c);
c = a / b;
Serial.print("a / b=");
Serial.println(c);
c = a % b;
Serial.print("a% b=");
Serial.println(c);
}
结果
a + b = 13
a - b = 5
a * b = 36
a / b = 2
a % b = 1
比较运算符
假设变量A为10,变量B为20,则:
运算符名称 | 运算符简写 | 描述 | 例子 |
---|---|---|---|
等于 | == | 检查两个操作数的值是否相等,如果相等,则条件为真(true)。 | (A == B)不为真 |
不等于 | != | 检查两个操作数的值是否相等,如果值不相等,则条件为真。 | (A != B)为真 |
小于 | < | 检查左操作数的值是否小于右操作数的值,如果是,则条件为真。 | (A < B)为真 |
大于 | > | 检查左操作数的值是否大于右操作数的值,如果是,则条件为真。 | (A > B)不为真 |
小于或等于 | <= | 检查左操作数的值是否小于或等于右操作数的值,如果是,则条件为真。 | (A <= B)为真 |
大于或等于 | >= | 检查左操作数的值是否大于或等于右操作数的值,如果是,则条件为真。 | (A >= B)不为真 |
例子
void setup () {
int a = 9,b = 4
bool c = false;
if(a == b)
c = true;
else
c = false;
if(a != b)
c = true;
else
c = false;
if(a < b)
c = true;
else
c = false;
if(a > b)
c = true;
else
c = false;
if(a <= b)
c = true;
else
c = false;
if(a >= b)
c = true;
else
c = false;
}
结果
c = false
c = true
c = false
c = true
c = false
c = false
布尔运算符
假设变量A为10,变量B为20,则:
运算符名称 | 运算符简写 | 描述 | 例子 |
---|---|---|---|
and(与) | && | 称为逻辑运算符与。如果两个操作数都是非零,那么条件为真。 | (A && B)为真 |
or(或) | || | 称为逻辑OR运算符。如果两个操作数中的任何一个非零,则条件变为真。 | (A || B)为真 |
not(非) | ! | 称为逻辑运算符非。用于反转其操作数的逻辑状态。如果条件为真,则逻辑运算符非将为假。 | !(A && B)为假 |
例子
void setup () {
int a = 9,b = 4
bool c = false;
if((a > b)&& (b < a))
c = true;
else
c = false;
if((a == b)|| (b < a))
c = true;
else
c = false;
if( !(a == b)&& (b < a))
c = true;
else
c = false;
}
结果
c = true
c = true
c = true
位运算符
假设变量A为60,变量B为13,则:
运算符名称 | 运算符简写 | 描述 | 例子 |
---|---|---|---|
and(与) | & | 如果同时存在于两个操作数中,二进制AND运算符复制一位到结果中。 | (A & B) 将得出12,即0000 1100 |
or(或) | | | 如果存在于任一操作数中,二进制OR运算符复制一位到结果中。 | (A | B)将得出61,即0011 1101 |
xor(异或) | ^ | 如果存在于其中一个操作数中但不同时存在于两个操作数中,二进制XOR运算符复制一位到结果中。 | (A ^ B)将得出49,即0011 0001 |
not(非) | ~ | 二进制NOT运算符是一元运算符,具有"翻转"位效果。 | (〜A)将得出-60,其为1100 0011 |
shift left(左移) | << | 二进制左移运算符。左操作数的值向左移动右操作数指定的位数。 | A << 2将得出240,即1111 0000 |
shift right(右移) | >> | 二进制右移运算符。左操作数的值向右移动右操作数指定的位数。 | A >> 2将得出15,即0000 1111 |
例如
void setup () {
int a = 10,b = 20
int c = 0;
c = a & b ;
c = a | b ;
c = a ^ b ;
c = a ~ b ;
c = a << b ;
c = a >> b ;
}
结果
c = 12
c = 61
c = 49
c = -60
c = 240
c = 15
复合运算符
假设变量A为10,变量B为20,则:
运算符名称 | 运算符简写 | 描述 | 例子 |
---|---|---|---|
自增 | ++ | 自增运算符,将整数值增加1 | A++ 将得出11 |
自减 | -- | 自减运算符,将整数值减1 | A-- 将得出9 |
复合加 | += | 加且赋值运算符。把右边操作数加上左边操作数的结果赋值给左边操作数。 | B += A等效于B = B + A |
复合减 | -= | 减且赋值运算符。把左边操作数减去右边操作数的结果赋值给左边操作数。 | B -= A等效于B = B - A |
复合乘 | *= | 乘法AND赋值运算符。 它将右操作数与乘且赋值运算符。把右边操作数乘以左边操作数的结果赋值给左边操作数。 | B *= A等效于B = B * A |
复合除 | /= | 除且赋值运算符。把左边操作数除以右边操作数的结果赋值给左边操作数。 | B /= A等效于B = B / A |
复合模数 | %= | 求模且赋值运算符。 求两个操作数的模赋值给左边操作数。 | B %= A等效于B = B % A |
复合按位或 | |= | 按位按位或且赋值运算符 | A |= 2与A = A | 2相同 |
复合按位与 | &= | 按位与且赋值运算符 | A &= 2与A = A & 2相同 |
例子
void setup () {
int a = 10,b = 20
int c = 0;
a++;
a--;
b += a;
b -= a;
b *= a;
b /= a;
a %= b;
a |= b;
a &= b;
}
结果
a = 11
a = 9
b = 30
b = 10
b = 200
b = 2
a = 0
a = 61
a = 12
文档更新时间: 2020-07-29 18:32 作者:admin