菜单 学习猿地 - LMONKEY

VIP

开通学习猿地VIP

尊享10项VIP特权 持续新增

知识通关挑战

打卡带练!告别无效练习

接私单赚外块

VIP优先接,累计金额超百万

学习猿地私房课免费学

大厂实战课仅对VIP开放

你的一对一导师

每月可免费咨询大牛30次

领取更多软件工程师实用特权

入驻
253
0

7.4.2赋值过程中的转换

原创
05/13 14:22
阅读数 54899
 

常用算术转换 不适用于 赋值运算。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类型,可能会引起警告。

 

发表评论

0/200
253 点赞
0 评论
收藏
为你推荐 换一批