@[TOC](关系,位)
目录
关系
运算符 | 含义 | 举例 | 结果 |
< | 小于 | 3<5 | 1 |
> | 大于 | 3>5 | 0 |
<= | 小于等于 | 3<=5 | 1 |
>= | 大于等于 | 3>=5 | 0 |
== | 等于 | 3==5 | 0 |
!= | 不等于 | 3!=5 | 1 |
当比较结果成立时,结果为1;不成立时,结果为0。
参与关系运算的两个运算量可以是任意类型的数据。
优先级:(<,>,<=,>=)高于(==,!=)
结合性:自左至右。
#include <stdio.h>
int main()
{
printf("%d",3>5); //运行结果依次为 0,0,3,1
printf("%d",3<4>2);
printf("%d",3+(4<3)*4);
printf("%d",3+4<3*4);
return 0;
}
位
运算符 | 含义 | 举例 | 结果 |
& | 按位与 | 3&5 | 1 |
| | 按位或 | 3|5 | 7 |
^ | 按位异或 | 3^5 | 6 |
~ | 按位取反(单目运算符) | ~3 | -4 |
<< | 左移 | 3<<1 | 6 |
>> | 右移 | 3>>1 | 1 |
位运算是对整型数据进行的运算,将两个运算符对应的二进制逐一按位进行运算,而且符号位需要参加运算。
分析位运算的结果时,先将运算的整数转换为二进制再进行按位运算。
# 按位与
00000011 (3的二进制)
&00000101 (5)
00000001 即 +1 (与的运算法则,仅当两位都为1时,结果为1)
# 按位或
00000011
|00000101 (或的运算法则)
00000111 即 +7
# 按位异或
00000011
^00000101
00000110 即+6 (异或运算的规则:相异为真,相同为假。)
# 左移,右移
用法:左移:a<<n,将a(a这个数的二进制位全部)按照二进制位向左移n位,变量a二进制的最高位n位溢出,舍弃;最低的n位用0补齐。
右移:与左移相似,将一个二进制位的操作数按指定移动的位数右移,移出位被舍弃,左边溢移出的空位,如果是不带符号数,则补入的数全为0;如果是带符号数,则补入的数全部等于原符号位(原数的最左端位上的原数)。
# 按位取反
~00000011
11111100 (此为负数,计算机中所有二进制输出都是补码的形式,需要将它转化为我 11111011(反码) 们能理解的二进制形式,符号位不变,减1,得到反码(补码=反 10000100(原码) 码 +1),再将反码的符号位不变,按位取反得原码,即得-4。)
求字节数
sizeof()运算符,是单目运算符,用于计算一个某种类型的运算量所占用的字节数(返回值为整数)。
使用方式:sizeof(类型标识符);
sizeof(变量名);或sizeof (空格) 变量名;
例子:
#include <stdio.h>
int main()
{
int a; //定义整型变量a
double x; //定义double型变量x
printf("%d,%d",sizeof(a),sizeof x); //运行结果4,8
printf("%d,%d",sizeof(int),sizeof(double)); //运行结果4,8
return 0;
}