【发布时间】:2018-06-04 06:14:07
【问题描述】:
#include <stdio.h>
#include <math.h>
int main(void){
printf("%lf\n", pow(1.0, 2.0));
printf("%f\n", pow(1.0, 2.0));
return 0;
}
第一个printf() 给出输出0.000000,但第二个printf() 给出输出1.000000。为什么?
在 Windows 7 64 位上使用代码块。
使用 gcc 命令编译给我一个 .exe,它为两个语句输出 1.000000。
如果我在 Codeblocks 上按 F9 进行编译,第一个语句得到 0.000000,第二个语句得到 1.000000。
最后,如果我从 Codeblocks 的源代码中删除 #include <stdio.h>,全部给我 1.000000(没有警告或错误)。
【问题讨论】:
-
不在ideone上:ideone.com/SRmfgd
-
对于
printf而言,"%f"和"%lf"是相等的,因为两者都期望double参数。您显示的代码是您测试过的实际代码吗?请创建一个Minimal, Complete, and Verifiable Example,然后将其复制粘贴到问题中。 -
无法复制。
-
code::blocks 不是编译器
-
使用 gcc 命令编译给我一个 .exe,它为两个语句输出 1.000000。如果我在 Codeblocks 上按 F9 进行编译,第一个语句得到 0.000000,第二个语句得到 1.000000。最后,如果我从 Codeblocks 的源代码中删除 #include
,都给我 1.000000。
标签: c printf double pow specifier