永发信息网

C中输出格式字符%lf的问题?

答案:6  悬赏:60  手机版
解决时间 2021-07-16 13:17
  • 提问者网友:niaiwoma
  • 2021-07-16 02:03

main()

{double s=1;

int i;

for(i=1;i<=100;i++)

s*=i;

printf("s=%lf\n",s);

}

在这里,%lf表示输出双精度实型。

可S不是无符号型吗?我用%u或者%ld长整型输出都是错误的啊,为什么?

最佳答案
  • 五星知识达人网友:你可爱的野爹
  • 2021-07-16 03:39

%u 是以无符号十进制形式输出整形数


%d 是以有符号十进制形式输出整形数


你没有转换当然出错了


还有printf("s=%lf\n",s);里的“l”表示输出长整型,它只可与d、o、x、u结合使用,你的基础没打好,要多看点书才行

全部回答
  • 1楼网友:洎扰庸人
  • 2021-07-16 08:13

你有一点概念错误。浮点型数据都带符号位,只不过正的可以不写。

“%lf”中的“l”表示“long”, “f”表示“float”。其意思是按照长浮点型格式输出变量s的值。

一个变量的值如果输出的格式不对,就有可能输出完全错误的结果。

整型与实型的存储格式不同,如果按照整型的格式解释实型数,结果是非常可笑的。这也是为什么你用%u和%ld输出的结果不正确的原因。

如果你不能完全理解上面这几句话,说明你对C语言的数据类型没有正确的理解,需要继续学习。

  • 2楼网友:笑迎怀羞
  • 2021-07-16 06:46

这里有个 隐式的类型转换的问题 。。 s*=i i是整形 s是double 类型的 系统自动 做隐式转换 相当于 s*=(double)i 所以 s 是 double类型的 %u 和 %ld 都不能输出

  • 3楼网友:过活
  • 2021-07-16 05:25
s明明是double型的 浮点型都是有符号的 而且浮点数和定点数的存储格式不同 所以double型是不能用%u或者%ld输出的
  • 4楼网友:话散在刀尖上
  • 2021-07-16 04:51

会失去真

  • 5楼网友:woshuo
  • 2021-07-16 03:58

TXT

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯