[C语言 - 13] 运算符
算术运算符
运算符的优先级
括号 > 正负 > 数学运算 > 位运算 > 数学对比 > 逻辑对比 > 条件运算 > 赋值运算
A.赋值运算符
复合赋值运算符
+=
-+
*=
/=
B.自增自减
a++ ++a
a— —a
ps:没有自乘自除:a** a//
C.sizeof
输出所占字节数
D.关系运算
除了0之外都是true
返回值只有0和1, 真即为1, 假即为0
存在多个运算符的时候,可以使用结果1和0继续按照优先级顺序运算
E.逻辑运算
逻辑运算的结果只有1和0
逻辑与: &&
逻辑或: ||
位与: &
位或: |
位抑或: ^
#include<stdio.h>
intmain(intargc,constchar* argv[]) {
intresult =1^1;
printf("result = %d\n", result);
return0;
}
intmain(intargc,constchar* argv[]) {
intresult =1^1;
printf("result = %d\n", result);
return0;
}
out:
result = 0
逻辑非: !
任何数值都有真假!!!
F.三目运算
xx?xx:xx
#include<stdio.h>
intmain(intargc,constchar* argv[]) {
inta =10;
intb =20;
intresult = a>b?33:11;
printf("result = %d\n", result);
return0;
}
intmain(intargc,constchar* argv[]) {
inta =10;
intb =20;
intresult = a>b?33:11;
printf("result = %d\n", result);
return0;
}
out:
result = 11
G.位运算
1.& 按位与
2.| 按位或
3.^ 按位抑或
同类型的位运算复合运算符合交换律
4.~ 按位取反
注意在64位系统中, int占8字节,且以补码形式存在,是在此条件下取反
5.<<n 左移
能够按照实际数值进行位移,数值最高位消去,且符号位不会改变
相当于乘以2的n次方
6.>> 右移
使用^交换两个变量值
int l = 10;
int m = 20;
l = l ^ m;
m = l ^ m;
l = l ^ m;
printf("l = %d, m = %d\n", l , m);
int m = 20;
l = l ^ m;
m = l ^ m;
l = l ^ m;
printf("l = %d, m = %d\n", l , m);
利用位运算符计算奇偶
普通方法
a%2==0?printf("偶数!\n"):printf("奇数\n”);
位运算
a&1?printf("奇数!\n"):printf("偶数\n");
编写二进制输出函数