【C语言】自动类型转换

举报
holo.yh 发表于 2021/05/26 12:15:39 2021/05/26
【摘要】 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

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。