C语言中关于字符型变量。

C语言中的字符变量为什么可以用正整数赋值?要得到正常的字符,条件是什么?若用负整数赋值情况又将如何?

越详细越好,谢谢!

C语言中的字符变量为什么可以用正整数赋值?要得到正常的字符,条件是什么?若用负整数赋值情况又将如何?

答:C语言中各种类型的变量其实都是内存地址。都可以通用的。
其中字符型最是最通用的一种,他是八位二进制的。即一个字节,可以存任何一个字节的变量。
如: int a = 0xFF;
char *p = &a;
A在内存中的样式:
低地址<- 0xff,0,0,0 ->高位。

则 *p==0xff;*(p+1)==0;
这个你明白了吧。字符型可以存任何数据。

英文字符实际上是0-127的数字编码存在内存中。我们叫他们ACSII码。电脑在处理这些数据时比如打印:
printf,如果用%d就打印他的的十进制ASCII码,而%C就打印字符。

若用负整数赋值情况又将如何?

负数实际上会变成正数,如-1==255,当然,你要强制转换成unsigned char型的。
下面举个例子:
#include <stdio.h>

int main (int argc, char *argv[])
{
char ch = 97;
char ch1 = -1;

printf("ch = %d\n",ch);
printf("ch = %c\n",ch);

printf("ch1 = %d\n",ch1);
printf("ch1 = %d\n",(unsigned char)ch1);
return 0;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-05-19
第2个回答  2008-05-19
因为字符都是用ASCII码表示的,所以每个字符都对应一个数字,范围从0-127.超多这个范围会出错
第3个回答  2008-05-19
正整数赋值实际上是以ASCII码的形式赋值
你可以查ASCII码表,某个范围内是正常字符

负整数赋值的话按溢出处理,溢出最后剩下的部分当作ASCII码。
第4个回答  2008-05-19
因为字符型变量占8位二进数的空间,表达范围为2的8次方(0-255),对于有符号型安符变量则为(-128-127),只要在这个范围内的数值都可以用字符型变量,这里你可能存在误解,以为字符型变量就是普通字符,它只是存储空间的概念。定义普通字符可用''括起来.
相似回答