常用算术转换 不适用于 赋值运算。C语言会遵循另一条简单的转换规则,那就是把赋值运算右边的表达式转换成左边变量的类型。如果变量的类型至少和表达式类型一样“宽”,那么这种转换将没有任何障碍。例如: char c; int i; float f; double d; i = c; /*c is converted 修改 to int*/ f = i; d = f; 其他情况下是有问题的。把浮点数赋值给整型变量会丢掉该数的小数部分: int i; i = 842.97;/*i is now 842*/ i = -842.97; /*i is now -842*/ 此外,把某种类型的值赋给类型更狭小的变量时,如果该值在变量类型范围之外,那么将会得到无意义的结果(甚至更糟)。 c = 10000; i = 1.0e20; f = 1.0e100; /*WRONG*/ 这类赋值可能会导致编译器或lint 之类的工具发出警告。 如果浮点常量被赋值给float型变量时,一个很好的方法是在浮点常量尾部加上后缀f f = 3.14.159f; 如果没有后缀,常量3.14.159将是double类型,可能会引起警告。 |
|
© 著作权归作者所有
发表评论