标题:大佬们萌新求助
只看楼主
miop
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2021-9-8
结帖率:80%
已结贴  问题点数:20 回复次数:3 
大佬们萌新求助
#include<stdio.h>
int main()
{
    double x;
    x = 8 / 5;
    printf("%.2lf",x);
    return 0;
}
这个代码输出的是1.00
但是我想输出1.60
也就是说它自动舍弃了
是哪里出了问题嘛
搜索更多相关主题的帖子: return 代码 输出 自动 printf 
2021-09-08 10:50
自由而无用
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:14
帖 子:61
专家分:1456
注 册:2021-8-9
得分:15 
//online parser: https://www.bccn.net/run/
程序代码:
#include <stdio.h>

#define CAST2D(_d) (double)(_d)

int main(int argc, char *argv[])
{
    double x;
    
    x = CAST2D(8) / CAST2D(5);
    printf("%.2lf",x);
    
    return 0;
}
2021-09-08 10:54
miop
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2021-9-8
得分:0 
回复 2楼 自由而无用
所以大佬您是先将CAST2D这个标识符定义成了8和5?
为什么就能输出1.6了呢?
2021-09-08 11:04
diycai
Rank: 8Rank: 8
等 级:贵宾
威 望:19
帖 子:147
专家分:895
注 册:2021-5-18
得分:5 
回复 3楼 miop
#include<stdio.h>
int main()
{
    double x;
    x = 8.0 / 5;
    printf("%.2lf",x);
    return 0;
}

想了解原理,那你就需要详细阅读《编译原理》了。
具体到这个问题来说,8和5都是整型,计算结果也是整型,最后才赋值给浮点型。
2021-09-08 11:08
miop
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2021-9-8
得分:0 
回复 4楼 diycai
好的 我知道了 谢谢大佬们!!
2021-09-08 11:10



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-506778-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.588168 second(s), 7 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved