C语言问题啊

#include<stdio.h>

int main()
{
char a;
scanf("%d", &a);
printf("%c\n", a);

return 0;
}

如果输入一个a呢 解释一下

scanf("%d", &a);
这一行决定,你在输入时,并按回车以前,他只认识纯数字和“-”号开头的组合。
1,
输入:123
输出:123
2,
输入:-123
输出:-123
3,
输入:-123a
输出:-123
4,
输入:a123 或 输入:a
输出都是你在char a出事化时候的值0.顾没有输出任何内容。
在这段代码里:
int main()
{
char a;// a 的值是0
scanf("%d", &a);// a 的值没有变,还是0
printf("%c\n", a);// a 的值0,以字符打出来就是字符串的结尾了。后面的换行都不会给你打出来

return 0;
}

纯手工制作,给分啊!追问

scanf("%d", &a);// a 的值没有变,还是0
为啥没有变啊 输入的值哪去了

a
?
Press any key to continue
后面的换行都不会给你打出来 啥意思?

追答

他是要把数字字符串转换成数字啊。
跟 atoi(a); 的功能类似。从数字字符开始给你翻译,碰到不是数字字符的就停下。上来就输入一个a,直接就停下转换了。而且转换字符串的长度为0,就是转换失败了。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-01-06
输入 97
%d以数值形式输入输出
%c以字符形式输入输出
不论x,y本身是整数型还是字符型
x=97和y='a'是一样的,没有任何区别
输出语句printf("%c %c",x,y) 结果都是a a
输出语句printf("%d %d",x,y) 结果都是97 97
以上x,y的定义不一定非要x整型,y字符型,它们都即可以是整型,又可以是字符型,
一句来说就是ASCII值范围内的数据定义成整数型和字符型没有任何区别。
第2个回答  2012-01-06
a中存储的将是字符a的asic码,至于会打印结果和机器大小端有关,结果会有不同。如果是小端机则输出字符a。因为在存储是存储在低八位,在取值时在做强转时取的还是低八位,故仍输出字符a。
第3个回答  2012-01-06
无法解释,这个程序不能用的
第4个回答  2012-01-06
你想问什么

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网