[C语言 - 13] 运算符

时间:2021-06-03 20:12:42
算术运算符
运算符的优先级
括号 > 正负 > 数学运算 > 位运算 > 数学对比 > 逻辑对比 > 条件运算 > 赋值运算
 
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;
}

 
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;
}

 
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);
 
利用位运算符计算奇偶
普通方法
    a%2==0?printf("偶数!\n"):printf("奇数\n”);
位运算
    a&1?printf("奇数!\n"):printf("偶数\n");
 
编写二进制输出函数