关于c编程

来源:百度知道 编辑:UC知道 时间:2024/05/24 17:24:26
#include<stdio.h>
void main()
{
int c1,c2;
c1='a';
c2='b';
printf("%c %c\n",c1,c2);
printf("%d %d\n",c1,c2);
}
我想问为什么int明明是整形变量,而我赋予c1,c2是字符数据,怎么也没有错呢!?

因为在内存中,字符型的数据是用ASCII码的形式存储的,这与整型数据的存储方式相似,再说int类型的占两个字节啊,而char只占了一个字节,把字符型的赋值给整型没问题啊,还有,如果所用系统把字符型数据当成有符号型的话,还要注意会存在符号扩展的问题。

因为C语言里面,字符类型是默认为整型的。比如你想使用的整数很小不超过-128~127这个范围,你就可以用char a = 36;而每一个字符在ASCII里面都有对应的十进制编码(就是一个整数),你的
printf("%d %d\n",c1,c2);
就打印出'a'和'b'对应的十进制编码。

你也刚学C语言吧,是大学生吗?
如果是的话,在发的《C程序设计》第三版上50页是专门说这个问题的,不过相比你看上面的回答应该懂了吧!