【C语言】自动类型转换
【摘要】 1.printf语句的格式说明和输出项类型必须保持一致,如果不一致,不会自动类型转换,结果会错的很离谱(并不会四舍五入)。例如: //1. int a = 2; printf("a = %f\n\n",a); //2. double b = 2.3333333; printf("b = %d\n\n",b); 结果如下:例外:("%lf",float)、("%f",double)的结果可以正...
1.printf语句的格式说明和输出项类型必须保持一致,如果不一致,不会自动类型转换,结果会错的很离谱(并不会四舍五入)。
例如:
//1.
int a = 2;
printf("a = %f\n\n",a);
//2.
double b = 2.3333333;
printf("b = %d\n\n",b);
结果如下:
例外:("%lf",float)、("%f",double)的结果可以正常输出,结果会四舍五入
double b = 2.66666666666666666;
printf("b = %f",b);
结果如下:
2.赋值运算的自动类型转换
如果格式说明与输出项类型不一致,则会截断高位或四舍五入。
赋值一定是右变左类型,那么就可能导致类型降级(右比左高)或升级(右比左低)
类型降级有风险,会损失数的精度,结论如下:
① 当float = double、double = long double时,结果会四舍五入;
② 其他类型的转换,例如:char = int、short = int、int = float时,结果会直接截掉高位
参考博文:
赋值中的类型转换:https://blog.csdn.net/zz460833359/article/details/48848197
float与double在输出/输入时的注意点:https://bbs.huaweicloud.com/blogs/268493
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)