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

在输出的时候加上(int)是否可行

#include

int main()

 {   

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

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

      return 0;

 }

 这样输出是否可行?

或者在输出之前加一行 num = (int)num  是否可行?

提问者:shadower 2015-05-27 17:50

个回答

  • Perona
    2015-05-27 18:02:32
    已采纳

    都可以啊。不过强制转换保险点还是加上数据类型。

    int num = (int)num;


  • onemoo
    2015-06-21 23:19:29

    目前阶段你所学到的类型大多是“算术类型”,比如各种整型(char short int long)和浮点型(float double),它们之间是可以进行转换的。 因为它们的取值范围不同,整型还有有无符号的区别,所以它们之间的转换规则有些复杂,不过它们是完全可以进行转换的。

    “算术类型”属于“标量类型”,指针也是一种标量类型。而结构体、联合体、数组类型就算是“非标量类型”了。这里面有些类型也是可以进行转换的,比如数组就可以隐式转换为指向数组首元素的指针...

  • onemoo
    2015-05-28 08:04:36

    如果你只写 num = (int)num; 是不行的。这句只是将num的值临时转换为int(截断成2),再将2赋值给num,而num仍然是double类型,与printf需要的类型不符。

    类似Perona的答案,你可以这样 int a = num; 再声明一个int型变量,把num的值赋给a,这过程中会自动进行类型转换,最后a的值是2,类型是int。注意不能像Perona那样再用num这个变量名了。