C语言,请问为什么出错了

如题所述

你的变量x是double型,执行x=(int)x;后,x的值还是double型,即123.000000,并不会变成int型,而用%d格式符来输出double型数据,当然会出错了。改成如下:
#include <stdio.h>
int main(void)
{
double x=123.4567;
printf("%d\n",(int)x);

return 0;
}追问

那么请问强制类型转化是不是都不改变变量的类型只改变相对的数值啊

追答

x=(int)x;
(int)x是int型,但是x的类型还是double,不会变成int型

温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-01-18

你的x是定义的double型,所以不能x = (int)x

如果想输出int部分,可以这样写:

printf("x=%d\n", (int)x);

第2个回答  2017-01-18

还可以这样

#include <stdio.h>
int main()
{
double x=123.4567;
int y;
y=(int)x;
printf("x=%d\n",y);
return 0;
}

相似回答