c语言中匿名变量作用之完全解析

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

c语言中匿名变量作用之完全解析

1运算中的临时匿名变量

1.1C语言和汇编的区别

我们知道C语言是高级语言,汇编语言是低级语言。为什么C语言就是高级语言呢?可以这么解释,汇编语言和机器操作相对应,汇编语言只是CPU的机器码的助记符,用汇编语言写程序必须拥有机器的思维。因为不同的CPU设计时指令集差异很大,因此用汇编编程的差异必然也会很大。高级语言(C语言)对低级语言进行了封装(C语言的编译器来完成),给程序员提供了一个靠近人类思维的一些语法特征,人类不用过于考虑机器原理,而可以按照自己的逻辑原理来编程。譬如数组、结构体、指针····。更高级的语言如java、C#等只是进一步强化了C语言提供的人性化的操作界面语法,在易用性上、安全性上进行了提升。

高级语言中有一些元素是低级语言中没有的,高级语言在运算中允许我们大跨度的运算,意思就是低级语言中需要好几步才能完成的一个运算,在高级语言中只要一步即可完成。譬如C语言中一个变量i要加1,在C中只需要i++即可,看起来只有一句代码。但实际上翻译到汇编阶段需要3步才能完成:第1步从内存中读取i到寄存器,第2步对寄存器中的i进行加1,第3步将加1后的i写回内存中的i。

1.2强制类型转换

C语言运算中的临时匿名变量就是C语言在强制类型转换时产生的一个临时匿名变量。理解这个临时匿名变量,有助于我们更好的理解C语言,写出更高质量的代码。

#include

int main(void)

{

float a=12.34;

int b=(int)a;(1)

printf("a=%f,b=%d.\n",a,b);

return0;

}

程序8.4

程序8.4执行的结果为a=12.340000,b=12。

在程序8.4代码(1)中,我们将浮点类型的a强制转换成int类型,a本身并没有发生改变。(int)a强制类型转换并赋值在底层实际分了4个步骤,以图8.3为例:

第一步先在另外的地方找一个内存构建一个临时变量x (x 的类型是int,x 的值等于a 的整数部分);

第二步将float a 的值的整数部分赋值给x;

第三步将x 赋值给b;

第四步销毁x。

最后结果:a 还是float 而且值保持不变,b 是a 的整数部分。

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

#include

int main(void)

int b;

float a;

b =10;

a =

b /3;

printf("a =%f.\n",a);}

上述代码中,执行的结果为a =3.00000。

第一步先算b/3;

第二步将第一步的结果强制类型转换为float 生成一个临时变量;

第三步将第二步生成的临时变量赋值给a;

第四步销毁临时变量。a(float 类型)

x(int

类型)

b

12.340000a 的整数部分x 的值

相关文档
最新文档