这个程序的运行结果怎么者么奇怪

来源:百度知道 编辑:UC知道 时间:2024/05/31 18:45:45
#include <stdio.h>
main()
{
char c1,c2;
c1="A";c2="a";
printf("c1=%c\tc2=%c\n",c1,c2);
printf("c1=%d\tc2=%d\n",c1,c2);
}
但是输出结果该怎么解释呢?呵呵,各位的回答都正确,但是我的意思是为什么用双引号后悔出现这样的结果,课本上就是这样让分析为什么的,为什么呢?用双引号肯定不对,但是每次运行结果都一样是奇怪的符号和负数……

怎么奇怪拉?
c1="A";c2="a";这样赋值有问题啊,这是给字符串赋值,而c1c2是char型。
c1='A';c2='a';这样才是给字符赋值

然后输出%c就是原字符,%d就是字符对应的asc2码,

答案就是A a 65 97

为什么会奇怪啊?
%c是以ASC码值的形式输出
%d是以十进制的形式输出

C系列中,char和int是隐式转换的,就是说用int型输出char型数据,就可以输出它的ASCII码值。

赋值应该用单引号,因为不是字符串,
%c是以ASC码值的形式输出的字符
%d是以十进制的形式输出的数字

#include <stdio.h>
main()
{
char c1,c2;
c1="A";c2="a";
printf("c1=%c\tc2=%c\n",c1,c2); /*输出的是字符*/
printf("c1=%d\tc2=%d\n",c1,c2); /*输出的是ASCII码*/
}

答案是:
c1=A c2=a
c1=65 c2=97

C 中,字符是以ASC2码的形式来存储的,而ASC码本身是0到255的整数,也就是是字符型变量占的一个字节长度。通过一定的规范约定,来代表256个常用字符。其中,A对应65,a对应97,0对应48等,连续的字母或数字则在上面的基础上递增,其中特别要注意的是字母大写的码值比小写的小。当一字符以c%输出的时候,系统给出字符本身,若以d%输出,则输出对应的码值,所以,假设有a,以c%输出的是a本身,以d%输出的是a的码值97。希望对你有所帮助