c语言吧,输出后c=48为什么?

#include<stdio.h>main(){charc='100';printf("c=%d\n",c);}#include<stdio.h>main(){charc... #include <stdio.h>
main ()
{
char c='100';
printf("c=%d\n",c);
}
#include <stdio.h>
main ()
{
char c='100';
printf("c=%c\n",c);
}
将%d换成%c后c=0。又是为什么?
展开
 我来答
百度网友e8ce36093d
2015-03-26 · TA获得超过213个赞
知道小有建树答主
回答量:60
采纳率:0%
帮助的人:71.2万
展开全部
这个问题很好。
在c语言里,单引号里面包含的是一个字符,双引号里面包含的是一串字符。
不过,在C语言的具体实现的时候,字符等同于整数。
所以,看起来不正确的char c='100';在C语言中,会把'100'当做一个整数,0x313030,
因为char类型只占用一个字节,所以0x313030的前面两个字节被舍弃,最后char c的值是0x30.
0x30是字符'0'的ASCII码。
所以变量c,输出字符是0,输出整数是0x30也就是48.
天云小店
2015-03-26 · TA获得超过2.8万个赞
知道大有可为答主
回答量:3281
采纳率:91%
帮助的人:746万
展开全部
因为将字符串'100'赋给char型的话,只会保存最后一个字符,也即字符'0',所以输出c=48(0的ASCII是48)
追问
因为char只能输入一个字符所以系统默认保存最后一个字符吗?
追答
对啊,系统只对char类型分配一个字节的存储空间,前面的都被后面的覆盖了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
当前不能联网
2015-03-26 · TA获得超过1563个赞
知道大有可为答主
回答量:2626
采纳率:66%
帮助的人:628万
展开全部
关键在于c的值,你给字符型赋的值就是0。
所以用%d输出的是c的ASCII码,用%c输出的就是c的值。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友1ee86e7
2015-03-26 · 超过11用户采纳过TA的回答
知道答主
回答量:46
采纳率:0%
帮助的人:23.1万
展开全部
char‘’获取的是Asc码,输出的当然就是Asc码值咯;%d输出c,%c输出c的字符
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式