c语言中如何如果定义一个int a = 1,那么类型是在内存中记录的?

int a =1
此时系统会分配一个内存块(1),并对应一个内存地址(&a);

那么,系统还做了什么,或者是c编译器做了什么,能够识别,内存地址&a指向的是int的变量的呢?
那么,系统还做了什么,或者是c编译器做了什么,能够识别,内存地址&a指向的是1是int类型的变量而不是float类型的呢?

第1个回答  2013-09-18
类型是编译器去记录和匹配的,类型的作用是保证数据的操作一致性,是一种抽象的约束,是语言层次的机制,是编译器去处理的。
编译成机器代码后,所有的类型信息都不存在了,而是翻译成了对应的机器代码。比如说int类型的加法运算,编译成机器代码后,就变成整数加法指令;float类型的加法就变成浮点数加法指令。本回答被提问者和网友采纳
第2个回答  2013-09-18
&a地址上存着的是1的二进制码
在a使用的时候才对a的值进行“翻译”,默认翻译为int型,
例如int a=65,而在使用的时候将其翻译为char,则输出"A"
printf("%c",a);
第3个回答  2013-09-18
变量里面存的是地址,地址里面存的才是数据的位置!
第4个回答  2013-09-18
推荐一本书《程序员的自我修养》。。。里面讲的很清楚。。。
第5个回答  2013-09-18
有特殊寄存器的吧,和浮点运算类似
相似回答