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
类型的变量。