运算符

运算符是一个符号,它告诉编译器执行特定的数学或逻辑函数。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,则:

运算符名称
运算符简写
描述例子
自增++自增运算符,将整数值增加1A++ 将得出11
自减--自减运算符,将整数值减1A-- 将得出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