19-使用数据类型
3.5 使用数据类型
编写程序时,应注意合理选择所需的变量及其类型。通常,用 int 或 float 类型表示数字, char 类型表示字符。在使用变量之前必须先声明,并选择有意义的变量名。初始化变量应使用与变量类型匹配的常数类型。例如:
int apples = 3; /* 正确 */
int oranges = 3.0; /* 不好的形式 */
与Pascal相比,C在检查类型匹配方面不太严格。C编译器甚至允许二次初始化,但在激活了较高级别警告时,会给出警告。最好不要养成这样的习惯。
把一个类型的数值初始化给不同类型的变量时,编译器会把值转换成与变量匹配的类型,这将导致部分数据丢失。例如,下面的初始化:
int cost = 12.99; /* 用double类型的值初始化int类型的变量 */
float pi = 3.1415926536; /* 用double类型的值初始化float类型的变量 */
第 1 个声明, cost 的值是 12 。C编译器把浮点数转换成整数时,会直接丢弃(截断)小数部分,而不进行四舍五入。第 2 个声明会损失一些精度,因为C只保证了 float 类型前 6 位的精度。编译器对这样的初始化可能给出警告。读者在编译程序清单 3.1 时可能就遇到了这种警告。
许多程序员和公司内部都有系统化的命名约定,在变量名中体现其类型。例如,用 i_ 前缀表示 int 类型, us_ 前缀表示 unsigned short 类型。这样,一眼就能看出来 i_smart 是 int 类型的变量, us_versmart 是 unsigned short 类型的变量。