在c中加倍到int

时间:2014-11-08 15:26:21

标签: c casting

我有这段代码:

#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? 如何使这项工作?

2 个答案:

答案 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)

适合我的工作

http://ideone.com/YBfHau

    #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

相关问题