五:逻辑运算符
运算符 含义 举例 结果 ! 逻辑“非” !3 0 && 逻辑“与” 3&&0 0 || 逻辑“或” 3||0 1
设:int a=5;float b=3.5;
计算:!a(0)
!a<b(1)
a&&b(1)
!a&&b(0)
!a&&!b(0)
!(a&&b)(0)
六:位运算符:
运算符 含义 举例 结果 & 换位与 3&5 1 | 按位或 3|5 7 ^ 按位异或 3^5 6 ~ 按位取反 ~3 -4 << 左移 3<<1 6 >> 右移
3>>1 1
#include<stdio.h>
int main()
{
printf("%d\n",3&5);
printf("%d\n",3|5);
printf("%d\n",3^5);
printf("%d\n",~3);
printf("%d\n",3<<1);
printf("%d\n",3>>1);
}
1.按位与:按位与“&”运算符,将两个运算量对应的二进制逐一按位进行逻辑与运算。每一位二进制数都要参与运算,包括符号位。
2.按位或:按位或“|”运算符,将两个运算量对应的二进制逐一按位进行运算。每一位二进制都要参与运算,包括符号位。
3.按位异或:按位异或“^”运算符,将两个对应的二进制运算符逐一按位进行逻辑异或运算。每一位二进制数都要参与运算,包括符号位。异或运算的规则为:相异为真,相同为假
4.按位取反:按位取反“~”运算符是一元运算符,其结果是将运算量的每个二进制位逐一取反,每一位二进制都要参与运算,包括符号位。
5.左移:左移运算符是一个二元运算符,需要两个运算量参与,且两个必须是整数。如a<<n,其意义是将a按照二进制位向左移动n位,最低的n位用0补齐 。
6.右移:右移运算符与左移类似都是二元运算符,目的是将运算量按二进制位右移。右移一位时,最低位舍弃。最高位补齐的数值,需要根据运算量的类型决定。如果运算量是一个有符号整数则补其符号位,如果是无符号的整数则最高补为0。
七:自增自减运算符
++i,--i 在使用i之前,先使i的值加/减1,先增减,后运算
i++,i-- 在使用i之后,使i的值加/减1,先运算,后加减
#include<stdio.h>
int main ()
{
int i=3;
printf("%d",++i);
return 0;
}
//
#include<stdio.h>
int main()
{
int i=3;
printf("%d",i++);
return 0;
}
//
#include<stdio.h>
int main()
{
int j,i=2;
j=i++;
printf("j=%d,i=%d",j,i);
return 0;
}