呵呵,如果你说的字符是C的话,一个字符多大?一个字节。
一个字节能表示多大的数据范围?256。
明白ASCII嘛为什么最多只编码到256?
超过256的数字?定义成单字节字符,那这个字符用什么值存?
所以:如果大于256的字符,就不是单字节字符了。
双字节字符编码方式多了,例如unicode、GBK等等,编码不一样同样一个值,字符也不一样,所以才有乱码。那又是另外一个话题。
截断处理,即从最低位起截取8位二进制码作为结果。如:
//#include "stdafx.h"//If the vc++6.0, with this line.
#include "stdio.h"
int main(void){
char x=257;//这里会有警告,就是在说x放不下257,把257截断处理了
printf("%d\n",x);
return 0;
}
输出是1。
256的二进制是1 0000 0000,执行过程中直接把后8位给了字符变量fp,所以结果是0
C语言中如果给一个字符变量赋值,那就直接切8位即一个字节内存中的内容给他,其他的忽略掉
超过255,又回从0算起
比如256,就是0,257就是1
字符型变量的值实质上是一个8位的整数值,因此取值范围一般是-128~127,char型变量也可以加修饰符unsigned,则unsigned char 型变量的取值范围是0~255(有些机器把char型当做unsighed char型对待, 取值范围总是0~255)。