C和指针 6.2 值和类型

缘起

《C和指针》 6.2节

分析

float x = 3.14, 则x在内存中的一个字(4B)内存储的内容可能是 1078523331

WTF? 竟然是一个整数? 说好的浮点数呢?

答案是一块内存中包含了一系列的01位,他它们既可以被解释为整数,也可以被解释为浮点数,这是C语言的两种基本类型. 那么到底被解释为哪种类型取决于使用它们的方式. 如果使用的是整型算术指令的话,则它们就被解释为整型,如果使用的是浮点型指令,它就被解释为一个浮点类型.

所以,我们得到一个重要结论:

不能简单通过检查一块内存中的值的位来判断这块内存中存储的值的类型. 它的类型取决于程序中对这个值的使用方式.

在程序中,如果我们将x声明为float类型的变量,那么程序访问它时,编译器就会产生浮点类型的指令. 如果我们以某种对float类型而言不适当方式访问该变量时,编译器就会发出警告.