标题:以下两份代码为何有这差别?
取消只看楼主
hffjhhh
Rank: 1
等 级:新手上路
帖 子:127
专家分:7
注 册:2019-4-10
结帖率:90.38%
已结贴  问题点数:20 回复次数:3 
以下两份代码为何有这差别?
第一份代码的输出结果为3.300000,代码如下:
程序代码:
#include"stdio.h"
int main(void){
    double num;
    num=3.3;
    printf("%lf",num);
    return 0;
}

第二份代码的输出结果为0.000000,代码如下:
程序代码:
#include"stdio.h"
int main(void){
    long double num;
    num=3.3;
    printf("%lf",num);
    return 0;
}

为何第二份代码加了个long,就产生这样的输出结果?
搜索更多相关主题的帖子: printf num 代码 输出 结果 
2020-06-11 23:12
hffjhhh
Rank: 1
等 级:新手上路
帖 子:127
专家分:7
注 册:2019-4-10
得分:0 
以下是引用rjsp在2020-6-12 07:19:19的发言:

long double 用 "%Lf",大写的L

即使改成了Lf也一样还是打印0.000000.
程序代码:
#include"stdio.h"
int main(void){
    long double num;
    num=3.3;
    printf("%Lf",num);
    return 0;
}
2020-06-12 13:19
hffjhhh
Rank: 1
等 级:新手上路
帖 子:127
专家分:7
注 册:2019-4-10
得分:0 
以下是引用ditg在2020-6-12 14:02:39的发言:

%llf再试一下

试了,还是不行。还是打印0.000000
2020-06-12 14:37
hffjhhh
Rank: 1
等 级:新手上路
帖 子:127
专家分:7
注 册:2019-4-10
得分:0 
回复 11楼 ditg
我没有学过汇编,因此不知道如何用汇编指令来验证是否是intel处理器的问题。
本机上sizeof(long double)的大小为16个字节。
如果intel处理器不是IEEE 754标准,那么是否意味着就是处理器的问题导致无法正确计算16个字节的long double类型的数据呢?
如果不是处理器的问题,那么是否意味着就是编译器的问题导致无法计算16个字节的long double类型的数据呢?也无法用%llf格式来打印16个字节的long double类型的数据呢?
2020-06-13 16:00



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




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

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