char a=5,把一个整数赋值给一个字符型变量,不理解什么意思,是数字5吗?可以把ASCII码ŀ

如题所述

将整数5赋值给字符型变量a,实际上是将字符编码为5的字符(即ASCII码表中的ENQUIRY字符)赋值给a。在C语言中,字符型变量实际上是整型变量的一种特殊情况,它占用一个字节的存储空间,可以存储0到255之间的整数值,也可以用单引号括起来的字符常量来初始化。
在赋值时,如果将一个整数赋值给字符型变量,编译器会自动将整数转换为对应的ASCII码表中的字符,然后将字符的编码值存储到变量中。因此,将整数5赋值给字符型变量a,实际上是将字符编码为5的字符存储到a中,这个字符在ASCII码表中是不可见的,对应的ASCII码值为5。
需要注意的是,将整数赋值给字符型变量时,如果整数的值超出了字符型变量的可表示范围(即0-255),则会出现溢出现象,导致结果不可预测。因此,在将整数赋值给字符型变量时,需要保证整数的值在字符型变量的可表示范围内。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-09-22

实际上char类型就是一个表示范围只有0~255的整数,说它是字符类型只不过是用ASCII码去解释。也就是说如果输入的时候用getchar(), scanf("%c"),scanf("%s"),从键盘得到的字符就会转化为整数存储在char类型的变量中;而输出的时候用putchar(),printf("%c"),printf("%s"),就会将整数转化为char字符输出出来。

char a = 5; // 这是整数常量,查ASCII码表可知,这个数字代表的字符是ENQ(就是一不可见字符)。
char a = '5'; // 这是字符常量,查ASCII码表可知,这个字符的整数值是53.

ASCII码表就是程序中的一种约定,里面有128个(只用了128个,剩下的未定义)整数和字符的一一对应关系。在程序里既可以使用整数也可以使用字符,但最好还是用字符常量,这样能明确地看出来字符是什么,而且大多数时候是不用在意那个具体的整数是多少,只需要知道字符是什么就行了。