问答详情
源自:2-9 强制类型转换

这么编怎么不对

  double num = 2.5;      //定义浮点型变量num1并赋值为2.5

    num=(int)num;

    printf("num的整数部分是%d\n", num);  

    return 0;

}


提问者:景逸Y 2015-01-31 22:12

个回答

  • yinzm
    2015-01-31 23:14:28

    你的num是double的,所以num=(int)num,这样赋值完之后,num仍然是double型的,而且此时num=2.0。你最后输出不能用%d,%d代表的是int型的。

    如果你想改,可以这样写:

    double num=2.5;
    int num1=(int)num;
    printf("%d\n",num1);

    或者这样:

    double num=2.5;
    num=(int)num;
    printf("%.0lf\n",num);//%.0lf代表输出的是double型的,并且小数点后保留零位小数(即只是整数部分)