繁体   English   中英

C 中的隐式转换

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM