C语言的问题:为什么字符型的‘2’+‘2’=50而不是等于100呢,‘2’的ASCII码不是为50吗

来源:百度知道 编辑:UC知道 时间:2024/05/25 22:15:06

#include<stdio.h>
void main()
{
char c,a;
a='2';
c=a+a;
printf("%d",c);
}
是100啊

楼上说的不对。这里c定义为char c;因此不存在字符连接和对字符串求ASCII的问题。
VC6.0下结果就是100,而不是50;
#include<stdio.h>
void main()
{
char c,a;
a='2';
c=a+a;
printf("%d",c);
getchar();
}
请楼主仔细检查代码,并说明编译环境.

这个……貌似我刚刚做了一下观察到结果确实为100啊……测试平台为vc++6.0。现附 上程序源码:
#include <stdio.h>
void main()
{
printf("%d",'2'+'2');
}
结果是:100press any key to continue
请楼主重新尝试。

我在6.0下执行一楼2楼的执行不出来个,怎么回事

很简单,楼上的以经说了,0-9的ASCII码值是从48-57,而”2”的ASCII码值是50,c=a+a; 这是字符连接,C中对字符串求ASCII值就是求第一个字符的ASCII值,这个程序中的printf("%d",c); 输出的应该是数值型的数据,所以是50

因为在C中,字符相加相当于是把两个字符连在一起,在此程序中,如果执行printf("%S",c); 输出结果为”22”,是字符型的,而”2”的ASCII码值是50,C中对字符串求ASCII值就是求第一个字符的ASCII值,这个程序中的printf("%d",c); 输出的应该是数值型的数据,所以是50