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

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

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;
}

因为字符都是用ASCII码表示的,所以每个字符都对应一个数字,范围从0-127.超多这个范围会出错
正整数赋值实际上是以ASCII码的凳衡形式赋值和唤
你可以枣棚做查ASCII码表,某个范围内是正常字符

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