【发布时间】:2017-03-16 03:13:27
【问题描述】:
我有以下程序(koko.c):
#include <stdio.h>
int main(){
double p = 0.1;
printf("%lf, %d\n", 1/p, 1/p);
return 0;
}
如果我尝试使用 gcc koko.c -o koko 编译它,我会收到错误:
koko.c:4:2:警告:格式“%d”需要“int”类型的参数,但参数 3 的类型为“double”[-Wformat=] printf("%lf, %d\n", 1/p, (int) 1/p);
如果我尝试禁用 Wformat(即gcc koko.c -Wformat=0 -o koko),它会编译,但是当我运行它时,我会得到意外的输出:
10.000000, -915298312.
对为什么会发生这种情况有任何想法吗?
【问题讨论】:
-
错误信息与程序不匹配。请发布您实际使用的程序-您问题中的程序没有任何演员表:-)
-
@psmears - 见上面的打印屏幕。 (我最初有一个演员,但没有它问题仍然存在)。
-
复制代码并输出文本并粘贴到此处,而不是图像中
标签: c gcc type-conversion