C语言修行之基础篇 (二十三) 运算中的临时匿名变量


C语言和汇编的区别

1、C语言是高级语言;汇编语言是低级语言
2、低级语言是汇编语言和机器操作相对应,汇编语言只是CPU的机器码的助记符,用汇编语言写程序必须拥有机器的思维。由于不同的CPU设计时指令集差异很大,则用汇编编程的差异很大。
高级语言是对低级语言进行了封装,给程序员提供一个靠近人类思维的一些语法特征,可以按照自己的逻辑原理来编程。
更高级语言如Java、C#等只是进一步强化了C语言提供的人性化的操作界面语法,在易用性上、安全性上进行了提升。


C语言的一些“小动作”

1、高级语言中有一些元素是机器中没有的
2、高级语言在运算中允许大跨度的运算。(低级语言中需要好几步才能完成的一个运算,在高级语言中只要一步即可完成)


C语言运算中的临时匿名变量应用

栗子1:C语言中变量i++一步就可以实现
转为汇编阶段需要3步才能完成:
(1)从内存中读取i到寄存器(2)对寄存器中的i进行加1(3)将加1后的i写回到内存中的i

栗子2:使用临时变量来理解强制类型转换

float a=1.34;
int b = (int)a;

以上这段代码的a,b最后的值是多少?———— a为1.34 b为1

问题: 为什么a最初是float类型的数据,被强制转换后a的值还是floa类型1.34呢?

分析: 这中间存在临时变量,(int)a强制类型装换并赋值在底层实际分了3步骤:
第一步在另外的地方找一个内存构建一个临时变量x(x的类型是int,x的值等于a的整数部分);
第二步将float a的值是整数部分赋值给x;
第三步将x赋值给b;
第四步销毁x

栗子3:使用临时变量来理解不同数据类型之间的运算

int b;
float a;
b = 10;
a = b/3;

以上这段代码的a最后的值是多少?———— a为3.0000

问题:a都是float类型的数据了,为什么算出来的不是3.3333而是3.0000
分析:
第一步先算b/3;
第二步将第一步的结果强制类型转换为float生成一个临时变量,
第三步将第二步生成的临时变量赋值给a;
第四步销毁临时变量

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Bazinga bingo

您的鼓励就是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值