五:逻辑运算符
运算符 |
含义 |
举例 |
结果 |
! |
逻辑“非” |
!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;
}