printf%e科学记数法在C中给出错误的值

one*_*day 0 c printf scientific-notation

我正在做一个非常基本的科学记数法打印输出.

但是,在我看来它不起作用,我无法弄清楚为什么?

码:

size_t result = 0;
printf("%e \n",result);
Run Code Online (Sandbox Code Playgroud)

打印的价值如下:

1.278341e-307
Run Code Online (Sandbox Code Playgroud)

做科学记数法的正确方法是什么?

ric*_*ici 11

如果使用浮点printf格式代码,%e匹配参数必须是a double.但是你传递一个整数(size_t).

Printf不知道其参数的类型,因此您必须使用正确的格式代码告诉它它们是什么.如果你撒谎,你会得到不确定的结果.

如果您使用的是gcc或clang,请始终使用-Wall命令行选项并阅读警告.这将为我们所有人带来很多麻烦.

  • 明白了 - 谢谢你的解释 - 似乎我需要阅读 printf 格式并且不能认为这是理所当然的:) (2认同)