C数据类型的转换问题

来源:百度知道 编辑:UC知道 时间:2024/06/06 09:31:42
C的教科书里说 int,char,float数据之间可以相互赋值、转换或运算。
那为什么我定义a,b,c为int类型,但是在运行时复制为char或float类型会出现错误的数值呢?
代码如下:
int a,b,c;
scanf("%d,%d,%d",&a,&b,&c);
printf("a=%d,b=%d,c=%d\n",a,b,c);

运行时赋值:B,2.22,F

输出如下:
a=0,b=64,c=3129

(复制粘贴的请不要回答。)

相互赋值 是说可以这样:
int a=1;
float b;
char c;
b=a;//赋值可以
c=b;//赋值可以,但会出warning.
c=(char)b;//这种转换可以
b = a+c;//这种转换和运算也是可以的。

你那个是输入输出,不是赋值。
输入输出都是有格式的,%d是说按照十进制整型来输入,结果你输个B,计算机当然不知道你在搞什么了,所以它还按十进制整型来认,就得不到你想要的结果了。

你输入时要与定义的类型相同的才行,你定义int型的,输入时也要int型的,转换是中间过程和输出时转换的