[英]Implicit Conversion in C
下面的 c 代码片段中是如何进行隐式类型转换的?输出是什么?
#include<stdio.h>
void main()
{
float f = (1/2)+(1.0/2)+(1.0/2.0);
double d = 1/2;
printf("%f \n %d",f,d);
}
1/2 是一个整数除以一个整数,得到一个整数值,即 0(.5 被截断)
1.0/2 是整数除以双精度值。 所以 2(整数值)被提升为 double 类型,然后发生除法给出一个 double 值。 所以结果值为 0.5。
1.0/2.0 导致双精度除以另一个双精度,双精度类型的结果仅为 0.5。
最后将所有这些添加到双类型的 1.0 中。 然后将其转换为浮点类型,因为 f 是浮点类型变量。
此外,打印带有 %d 说明符的 double 类型值会导致未定义的行为。参见这篇文章
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.