在c语言里字符类型,有无符号字符类型和有符号字符类型,但是有些电脑里面字符类型对应的整数是0-255,那么对于这类计算机我定义如下变量并赋如下值会怎样?char a=-5;烦请大神讲解
有的编译器输出一个乱码字符,有的不输出,有的是占位符
还有字符赋值的时候要加单引号char a = '-5';
char a=-5,char本来就可以负数,如果是unsigned char=-5,那么会转换成unsigned,脱去符号,结果是256-5=251
试了一下,输出来的好像是 你一直加256直到它大于等于零小于256为止的那个数对应的字符。
首先它默认的类型是signed,-5二进制形式1000 0101,转化为补码是 1111 1011,signed char的表示长度是-128~127,而unsigned
char 能表示的数值范围是0~255,%u按照unsigned格式输出会把 1111 1011当成251来输出,%d是按signed类型输出则就是-5,
默认的是signed类型的
1Byte = 2^8 = 256 所以一个Byte的无符号的数最大就是 256 有符号数的第一位表示符号,1就是负数,所以范围就是 -128~127。
例如: 10000100 无符号表示就是133 有符号表示就是-5,但是在计算机存储中存的都是10000100。
所以当你定义变量 char a = -5 或者 char = 133时,在计算机中存的都是 char a = 10000100B。
有符号型变量的取值可以取到负值,而无符号型的只能取正值。比如说无符号字符型的取值范围是0~256,而有符号的则是-128~128.
首先它默认的类型是signed,-5二进制形式1000 0101,转化为补码是 1111 1011(-5在计算机中的存储二进制),signed char的表示长度是-128~127,而unsigned
char 能表示的数值范围是0~255,%u按照unsigned格式输出会把 1111 1011当成251来输出,%d是按signed类型输出则就是-5,
默认的是signed类型的
因为默认的是有符号,也就是signed的。计算机在存储的过程种自动转换成补码的形式存储到内存种去