#include
int main()
{
double num = 2.5; //定义浮点型变量num并赋值为2.5
printf("num的整数部分是%d\n", (int)num);
return 0;
}
这样输出是否可行?
或者在输出之前加一行 num = (int)num 是否可行?
都可以啊。不过强制转换保险点还是加上数据类型。
int num = (int)num;
目前阶段你所学到的类型大多是“算术类型”,比如各种整型(char short int long)和浮点型(float double),它们之间是可以进行转换的。 因为它们的取值范围不同,整型还有有无符号的区别,所以它们之间的转换规则有些复杂,不过它们是完全可以进行转换的。
“算术类型”属于“标量类型”,指针也是一种标量类型。而结构体、联合体、数组类型就算是“非标量类型”了。这里面有些类型也是可以进行转换的,比如数组就可以隐式转换为指向数组首元素的指针...
如果你只写 num = (int)num; 是不行的。这句只是将num的值临时转换为int(截断成2),再将2赋值给num,而num仍然是double类型,与printf需要的类型不符。
类似Perona的答案,你可以这样 int a = num; 再声明一个int型变量,把num的值赋给a,这过程中会自动进行类型转换,最后a的值是2,类型是int。注意不能像Perona那样再用num这个变量名了。