re学习记录从入门到入狱【8】

25 篇文章 0 订阅

运算符与表达式

1、什么是运算符,什么是表达式?
表达式是由一系列运算符(operators)和操作数(operands)组成的
例如:

int a,b,c;
c = a + b;
c = a * b;
c = a / b;
c = a - b;
a == b;
a = b;

+ - * / == = 一系列符号就是运算符

上面的 a+b 、a/b等,就是表达式。

表达式就运算符和操作数(变量,立即数等)组成的一系列完整语句

表达式运算结果
若我们的操作数类型并不相同,比如 c = a + b,此处的a为char,b为short

#include <stdio.h>
void main()
{
	char a = 1;
	short b = 2;
	int c = a + b;
	return;
}

然后我们在return或者结尾花括号处 F9 下断,然后构建运行,去反汇编窗口查看。
在这里插入图片描述
看横线和圈出来的地方

char a = 1;   -->  mov         byte ptr [ebp-4],1     //把1给ebp-4,一字节byte
short b = 2;  -->  mov         word ptr [ebp-8],offset main+20h (0040d4b0)   //把2给ebp-8,双字节word
//int c = a + b;
movsx       eax,byte ptr [ebp-4]
movsx       ecx,word ptr [ebp-8]
//以上两句movsx语句,把ebp-4,和ebp-8扩展给了eax和ecx(四字节)

所以由上得出,char和short运算的时候会先转为int类型。
char --> short --> int --> float --> double
看上面箭头标注,char和short运算的时候,会先转为int类型。
int和float类型计算,最后是float类型
float和double类型计算,最后是double类型
2. 常见运算符
算数运算符:
在这里插入图片描述
那么假设,a是3,b是2,上面都是多少呢?
a+b=5
a-b=1
a*b=6
a/b=1.5
a%b=1
a++ = 4
++a = 4
–a = 2
a-- = 2
++a / a++和--a / a--都是一个结果,区别在哪?
a++ 是先使用再+1
++a 是先+1,再使用
–a 和 a–同理

#include <stdio.h>
void main()
{
int a, b, c;
a = 5; //此时 a的值是5
b = a++; //a一开始为5, 先返回a的值给b,b此时就为5,然后 a再执行++,a才变成了6。
printf("a = %d, b = %d \n", a, b); //输出 a = 6, b = 5
c = ++a; // a先++,a此时就是7了,然后再把a的值给c,c这时候就等于7。
printf ("a = %d, c = %d \n", a, c); //输出 a = 7, c = 7
return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值