我有这段代码:
#include <stdio.h>
int main ()
{
double d = 10;
int x = 5;
x = (int) d + x;
d = (double)x + d;
printf("%lf\n" , d);
printf("%d\n" , x);
}
输出是:
-0.0000
15
为什么这适用于int
但不适用于double
?
如何使这项工作?
答案 0 :(得分:4)
在C89中使用%f
格式说明符来打印double
值。对于较新的标准,您可以使用%lf
,在这种情况下,l
无效(它是为了与scanf()
对称而引入的),但它只是在寻找麻烦,因为它& #39;在以前的标准中未定义。
#include <stdio.h>
int main(void)
{
double d = 10;
int x = 5;
x = (int) d + x;
d = (double)x + d;
printf("%f\n", d);
printf("%d\n", x);
return 0;
}
请注意,在C89中,您可能应该添加return 0;
。使用C99 / C11 return 0;
在省略时隐式添加(除了直接在exit()
中调用main()
函数,这也适用于此。)
答案 1 :(得分:0)
适合我的工作
#include <stdio.h>
int main ()
{
double d = 10;
int x = 5;
x = (int) d + x;
d = (double)x + d;
printf("%lf\n" , d);
printf("%d" , x);
return 0;
}
编辑:请记得添加return 0