鱼C论坛

 找回密码
 立即注册
查看: 2350|回复: 2

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

[复制链接]
发表于 2013-12-21 16:27:46 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#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);
} QQ图片20131221162207.jpg 为什么输出是这些数值!!!头大了!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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窗口显示不出来,但是实际上显示了,我们看不见而已。)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-12-21 23:41:36 | 显示全部楼层

:handshake一提终于明白其中的道理,,这道题很有一个示范了赋值的很多问题出来,谢谢详细解答!!!THx
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-23 18:51

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表