注册 登录
编程论坛 C语言论坛

大佬们萌新求助

miop 发布于 2021-09-08 10:50, 1585 次点击
#include<stdio.h>
int main()
{
    double x;
    x = 8 / 5;
    printf("%.2lf",x);
    return 0;
}
这个代码输出的是1.00
但是我想输出1.60
也就是说它自动舍弃了
是哪里出了问题嘛
3 回复
#2
自由而无用2021-09-08 10:54
//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;
}
#3
miop2021-09-08 11:04
回复 2楼 自由而无用
所以大佬您是先将CAST2D这个标识符定义成了8和5?
为什么就能输出1.6了呢?
#4
diycai2021-09-08 11:08
回复 3楼 miop
#include<stdio.h>
int main()
{
    double x;
    x = 8.0 / 5;
    printf("%.2lf",x);
    return 0;
}

想了解原理,那你就需要详细阅读《编译原理》了。
具体到这个问题来说,8和5都是整型,计算结果也是整型,最后才赋值给浮点型。
#5
miop2021-09-08 11:10
回复 4楼 diycai
好的 我知道了 谢谢大佬们!!
1