C语言—操作符详解
————————————————————————————————————————
操作符
操作符包括算术操作符,移位操作符,位操作符,赋值操作符,单目操作符,关系操作符,逻辑操作符,条件操作符,逗号操作符以及下表引用、函数调用、结构体成员操作符。
接下来详细介绍每一种操作符。
1、算术操作符
算术操作符包括:+(加)、-(减)、*(乘)、/(除)、%(取模)
这里主要讲解 / 和 % 的用法:
/ 输出结果为商
% 输出结果为余数
#include <stdio.h>
int main()
{
// /的使用
int m1 = 11 / 5;
printf("%d\n", m1);
// %的使用
int n1 = 11 % 5;
printf("%d\n",n1);
return 0;
}
上述程序的运行结果如图所示:
注意:
/ 两边的数字如果都是整型,计算结果也是整型;如果两边存在浮点数,则计算结果为浮点数;
% 两边的数字必须都是整型
2、移位操作符
移位操作符包括:>>(右移)、<<(左移)
1.>>(右移):
例如:将15右移两位
首先,将十进制数15转为二进制数:00001111
然后对二进制数进行右移两位:即结果为:00000011,十进制表示3
将-15右移两位
首先,要清楚负数在计算机中是以补码形式存在的。
计算-15补码的过程如下:
- 15的原码为:00001111
- -15的原码为:10001111
- -15的反码为:11110000(除符号位,其余取反)
- -15的补码为:11110001(补码=反码+1)
- 然后对补码进行右移两位:即结果为:11111100
计算结果的反码为:10000011,即补码为:10000100,十进制表示-4
注意:
对于有符号数,右移时,符号位也跟着移动。
当为正数时,最高位补0;为负数时,符号位为1,最高位补0或者1取决于编译系统
#include <stdio.h>
int main()
{
//15右移两位
int num1 = 15;
int res1 = num1 >> 2;
printf("res1=%d\n", res1);
//-15右移两位
int num2 = -15;
int res2 = num2 >> 2;
printf("res2=%d\n", res2);
return 0;
}
上述程序的运行结果如图所示:
3、位操作符
位操作符包括:&(按位与)、^(按位异或)、|(按位或)
&(按位与):计算1与15,首先将1、15转为二进制,然后按位进行“与”运算
00000001 & 00001111 = 00000001,十进制表示1
^(按位异或):计算1异或15,首先将1、15转为二进制,然后按位进行“异或”运算
00000001 ^ 00001111 = 00001110,十进制表示14
|(按位或):计算1或5,首先将1、15转为二进制,然后按位进行“或”运算
00000001 | 00001111 = 00001111,十进制表示15
#include <stdio.h>
int main()
{