0
点赞
收藏
分享

微信扫一扫

C语言学习入门之操作符详解(上)

1. 操作符的分类

算术操作符
移位操作符
位操作符
赋值操作符
单目操作符
关系操作符
逻辑操作符
条件操作符
逗号表达式
下标引用、函数调用和结构成员

2. 算术操作符

+ - * / %(加法,减法,乘法,取余,取模)
  1. 代码演示:
#include<stdio.h>
int main()
{
	
	float b = 7 / 2;
	float c = 7.0 / 2;
	printf("%f\n", b);
	printf("%f\n", c);

	return 0;
}

运行结果:

在这里插入图片描述

  1. 代码演示:
#include<stdio.h>
int main()
{
	int a = 7 % 2;
	float b = 7 % 2;
	printf("%d\n", a);
	printf("%d\n", b);
	return 0;
}

运行结果:
在这里插入图片描述

3. 移位操作符

  • 3.1 左移操作符

操作符对整数操作的流程:
(1)先将整数的原码转换成反码
(2)反码 +1转换成补码
(3)最后对整数的补码进行操作
(4)操作结束后,将操作后的补码 -1 转换成反码
(5)将反码转换成最终的原码

代码演示:

#include<stdio.h>
int main()

{
	
	int a = 2;// 00000000 00000000 00000000 00000010 2的补码
	int b = a << 1;//操作的补码二进制位,a本身结果不变
	printf("%d\n", a);// 2
	printf("%d\n", b);// 4
	return 0;
}

分析:
在这里插入图片描述

运行结果:
在这里插入图片描述

注意:对于移位运算符,不要移动负数位,这个是标准未定义的

intnum=10;
num>>-1;//error
  • 3.2 右移操作符

分为逻辑移位和算术移位
逻辑移位:左边用0填充,右边丢弃
算术移位:左边用原该值的符号位填充,右边丢弃
右移操作符采用逻辑移位还是算术移位,取决于电脑编译器

代码演示:

int main()
{
	int a = 5;
	int b = a >> 1;
	printf("%d\n", a);//打印-5
	printf("%d\n", b);// -3
	return 0;
}

分析:
00000000 00000000 00000000 00000101 5的二进制补码
算术右移:左边用原该值的符号位1填充 右边丢弃1
00000000 00000000 00000000 00000010 右移后的补码
右移后的补码就是右移后的原码 2
运行结果:
在这里插入图片描述

4. 位操作符

& 按位与 相同为1,相异为0
| 按位或 有1为1,全0为0
^ 按位异或 相同为0,相异为1
注:他们的操作数必须是整数

代码演示:

#include<stdio.h>
int main()
{	
	int a = 1;
	int b = -2;
	int c = a & b;
	int d = a | b;
	int e = a ^ b;
	printf("%d\n", c);
	printf("%d\n", d);
	printf("%d\n", e);
	return 0;
}

分析:
00000000 00000000 00000000 00000001 1的补码
11111111 11111111 11111111 11111110 -2的补码
按位与:相同为1, 相异为0
00000000 00000000 00000000 00000000 0的补码 原码表示0
按位或: 有1为1, 全0为0
11111111 11111111 11111111 11111111 -1的补码 原码表示-1
按位异或: 相同为0, 相异为1
11111111 11111111 11111111 11111111 -1的补码 原码表示-1

运行结果:在这里插入图片描述
结果表明分析的很正确

5. 赋值操作符

注意:条件语句中,if(a==10) 易错被写成赋值:if(a=10),这时条件为真,语句将执行。为了避免错误,可写成 if(10==a),数值10不能被赋值,写成赋值时会报错。

+=
-=
*=
/=
%=
>>=
<<=
&=
|=
^=

int  x = 0;
x = x +10;
x+=10;//复合赋值

其他的运算符也是这样的,这样写比较简便。

总结

本篇详细整理了前四种操作符,整理复习的同时也希望能帮到各位刚接触c的朋友们,下期是另外六种操作符的详解,ヾ(•ω•`)o下期再见咯!

举报

相关推荐

0 条评论