运算符是一种告诉编译器执行特定的数学或逻辑操作的符号。
运算符分为:算术运算符、关系运算符、逻辑运算符、位运算符、赋值运算符和其他运算符。
算术运算符有:
+(加):把两个操作数相加
-(减):从第一个操作数中减去第二个操作数
*(乘法):把两个操作数相乘
/(除法):分子除以分母
%(取模):取模运算符,整除后的余数
++(递增):自增运算符,整数值增加 1
--(递减):自减运算符,整数值减少 1
说明: c = a++ 或者 c = a--; 先赋值后运算; c = ++a或者 c = --a;先运算后赋值
关系运算符:
等于(==):检查两个操作数的值是否相等,如果相等则条件为真。(A == B) 为假。
不等于(!=):检查两个操作数的值是否相等,如果不相等则条件为真。(A != B) 为真。
大于(>):检查左操作数的值是否大于右操作数的值,如果是则条件为真。(A > B) 为假。
小于(<):检查左操作数的值是否小于右操作数的值,如果是则条件为真。(A < B) 为真。
大于等于(>=):检查左操作数的值是否大于或等于右操作数的值,如果是则条件为真。
(A >= B) 为假。
小于等于(<=):检查左操作数的值是否小于或等于右操作数的值,如果是则条件为真。(A <= B) 为真。
逻辑运算符:
逻辑或(||):如果两个操作数中有任意一个非零,则条件为真。(A && B) 为假。
逻辑非(!): 用来逆转操作数的逻辑状态。如果条件为真则逻辑非运算符将使其为假。(A || B) 为真。
逻辑与(&&): 如果两个操作数都非零,则条件为真。!(A && B) 为真。
位运算符:
位运算符作用于位,并逐位执行操作,分别有:
&(按位与运算符): 按二进制位进行"与"运算。运算规则:0&0=0; 0&1=0; 1&0=0; 1&1=1;
| (按位或运算符): 按二进制位进行"或"运算。运算规则:0|0=0; 0|1=1; 1|0=1; 1|1=1;
^ (异或运算符): 按二进制位进行"异或"运算。运算规则:0^0=0; 0^1=1; 1^0=1; 1^1=0;
~(取反运算符): 按二进制位进行"取反"运算。运算规则:~1=0; ~0=1;
<<(二进制左移运算符): 将一个运算对象的各二进制位全部左移若干位(左边的二进制位丢弃,右边补0)。
A=60,A << 2 将得到 240,即为 1111 0000
<<(二进制右移运算符): 将一个数的各二进制位全部右移若干位,正数左补0,负数左补1,右边丢弃。
A >> 2 将得到 15,即为 0000 1111
假如p = 0, q=0,p&q=0,p|q=0,p^q=0;
假如p = 0, q=1,p&q=0,p|q=1,p^q=1;
假如p =1, q=1,p&q=1,p|q=1,p^q=0;
假如p =1, q=0,p&q=0,p|q=1,p^q=1;
赋值运算符
=(简单的赋值运算符):把右边操作数的值赋给左边操作数,C = A + B 将把 A + B 的值赋给 C
+=(加且赋值运算符):把右边操作数加上左边操作数的结果赋值给左边操作数,C += A 相当于 C = C + A
-=(减且赋值运算符):把左边操作数减去右边操作数的结果赋值给左边操作数,C -= A 相当于 C = C -+ A
*=(乘且赋值运算符):把右边操作数乘以左边操作数的结果赋值给左边操作数,C*= A 相当于 C = C *A
/=(除且赋值运算符):把左边操作数除以右边操作数的结果赋值给左边操作数,C /= A 相当于 C = C / A
%=(取模且赋值运算符):求两个操作数的模赋值给左边操作数,C %= A 相当于 C = C % A
<<=(左移且赋值运算符):C <<= 2 等同于 C = C << 2
>>=(右移且赋值运算符):C >>= 2 等同于 C = C >> 2
&=(按位与且赋值运算符):C &= 2 等同于 C = C & 2
|=(按位或且赋值运算符):C |= 2 等同于 C = C | 2
^=(按位异或且赋值运算符):C ^= 2 等同于 C = C ^ 2
其他运算符
sizeof() : 返回变量的大小。eg: sizeof(a) 将返回 4,其中 a 是整数。
& : 返回变量的内存地址。eg: &a; 将给出变量的实际地址。
* : 指向一个变量。eg: *a; 将指向一个变量。
? : 条件表达式,如果条件为真 ? 则值为 X : 否则值为 Y
C 中的运算符优先级
后缀 : () [] -> . ++ - - ==> 从左到右
一元: + - ! ~ ++ - - (type)* & sizeof ==> 从右到左
乘除: * / % ==> 从左到右
加减 : + - ==> 从左到右
移位: << >> ==> 从左到右
关系: < <= > >= ==> 从左到右
相等: == != ==> 从左到右
位与: AND & ==> 从左到右
位异或: XOR ^ ==> 从左到右
位或: OR | ==> 从左到右
逻辑与: AND && ==> 从左到右
逻辑或: OR || ==> 从左到右
条件: ?: ==> 从右到左
赋值: = += -= *= /= %=>>= <<= &= ^= |= ==> 从右到左
逗号: , ==> 从左到右