首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >类型转换输出

类型转换输出
EN

Stack Overflow用户
提问于 2012-10-01 22:57:52
回答 2查看 243关注 0票数 2
代码语言:javascript
复制
#include <stdio.h>

main()
{
    float x;
    x = (float)3.3==3.3;
    printf("%f",x);

    x=(float)3.5==3.5;
    printf("\n%f",x);
}

我搞混了,在第一种情况下,答案是0.000,在第二种情况下,答案是1.00.有人能解释吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-10-01 23:07:27

默认情况下,右侧的数字类型转换为双精度而不是浮点数。为了使两种情况都打印1,您需要将浮点类型转换更改为双精度,或者将第二个数字类型转换为浮点数:

代码语言:javascript
复制
float x;
x = (float)3.3==(float)3.3;
printf("%f",x);
x=(float)3.5==(float)3.5;
printf("\n%f",x);

或者:

代码语言:javascript
复制
float x;
x = (double)3.3==3.3;
printf("%f",x);
x=(double)3.5==3.5;
printf("\n%f",x);
票数 0
EN

Stack Overflow用户

发布于 2012-10-01 23:01:05

表达式

代码语言:javascript
复制
(float)3.3==3.3

首先将double值3.3转换为float精度,因此更改了它的值,因为它在目标类型中不能精确表示。然后,将该float值转换回double,而不更改比较的值`,从而导致比较返回0 (false)。3.5在这两种类型中都完全可表示,因此比较结果返回true (1)。

然后,在这两种情况下,比较的int结果都会转换为赋值的float

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12675776

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档