rock8312 发表于 2013-12-21 16:27:46

赋值输出问题,求解释为何是这个数值?

#include <stdio.h>
void main()
{
int a, b = 32;
float x, y = 8.88;
char c1 = 'k', c2;
a = y;
x = b;
a = c1;
c2 = b;
printf("%d,%f,%d,%c\n", a, x, a, c2);
}为什么输出是这些数值!!!头大了!!!

CL0419 发表于 2013-12-21 17:54:22

a = y;//a = 8(在32位操作系统中规定整型大于或等于单精度型,但是不会小于单精度型,所以y赋给a,所以a等于8)
x = b;        //b = 32,所以x=32.000000(是单精度型)
a = c1;        //c1 = 'k'即c1 = 107,因为k字符在ASCII码中是107,所以a = 107会覆盖上述的a = y,即107是a的最终结果
c2 = b;        //b是整型,且b = 32,当把整型赋给字符型时,会把32转换为字符:空格符,即32在ASCII码中代表的就是空格符,所以你在输出的c2显示不出什么,实际上它显示了空格。
printf("%d,%f,%d,%c\n", a, x, a, c2);//a以整型输出,所以a = 107,x以单精度型输出,所以x = 32.000000,a又以整形输出,所以a还是等于107,c2以字符型输出,所以c2 = 空格符(注: dos窗口显示不出来,但是实际上显示了,我们看不见而已。)

rock8312 发表于 2013-12-21 23:41:36

CL0419 发表于 2013-12-21 17:54 static/image/common/back.gif
a = y;//a = 8(在32位操作系统中规定整型大于或等于单精度型,但是不会小于单精度型,所以y赋给a,所以a等于8 ...

:handshake一提终于明白其中的道理,,这道题很有一个示范了赋值的很多问题出来,谢谢详细解答!!!THx
页: [1]
查看完整版本: 赋值输出问题,求解释为何是这个数值?