C语言编程中,若赋予 signed char c的值为255,则输出的值为-1。这是书上说的。我知

C语言编程中,若赋予 signed char c的值为255,则输出的值为-1。这是书上说的。我知道是超出了取值范围,但我不知道为什么输出的是-1?输入256的话也是一样是-1吗?

char是一个字节8位,8位有符号数表示的范围是-128~127,负数是在计算机中是用补码表示的,255换成二进制是8个1,最前面一位是1,表示是负数,具体的数值呢,由正数到负数是取反加1,反过来是减一取反,所以8个1减一后是11111110,取反后是1,所以是-1,如果是256的话,直接就溢出了,1后面8个0,直接取后面8个0放到变量中,所以是0.
温馨提示:内容为网友见解,仅供参考
无其他回答

...signed char c的值为255,则输出的值为-1。这是书上说的。我知_百 ...
char是一个字节8位,8位有符号数表示的范围是-128~127,负数是在计算机中是用补码表示的,255换成二进制是8个1,最前面一位是1,表示是负数,具体的数值呢,由正数到负数是取反加1,反过来是减一取反,所以8个1减一后是11111110,取反后是1,所以是-1,如果是256的话,直接就溢出了,1后面8...

C语言数值超出了最大值会输出最小值-1的值?
对于有符号数的最大整数值,如果再+1的话,输出的结果是-1。以一个字节的为例子说明这个问题。char型的最大整数值是127,对应的二进制是: 0111 1111,最高位0表示符号位(0为正,1为负),然后加1的话,就变成了1000 0000,这个你应该知道吧。而这个1000 0000恰好是-1的补码,因为负数在内存...

C语言char类型可以赋值为-1吗?
char占一个字节,也就是8个二进制位,但它表示的是有符号的类型,所以表示的范围是-128~127;因为-1是在char表示的范围是-128~127内部,所以char类型完全可以赋值为-1

关于C语言中signed char的问题。
signed char,unsigned char都是显式声明的有符号\/无符号,而char可能是二者其中之一,由编译器决定。就是说,如果你写char,有可能是signed的,也有可能是unsigned的。但是绝大多数编译器是默认为signed的。值得注意的是,上面讲的是表示范围,但是无论是C还是C++,signed char、unsigned char、char是三种...

C语言,有一种格式叫signed char,范围是-128--127,请问负值有对应的AS...
signed char代表8位二进制的有符号整数.char代表字符.可以是无符也可以是有符,取决于编译器.在解释值时要转换成有符或无符的转型.unsigned char代表无符号整数.这三个对编译器来说是不太一样的.要分清楚.字符集都用无符数来表示,不能叫负数,ascii码有0到127,共128个.这三个类型都能完美表示,...

C语言程序:输入一个字符,如果是数字字符,把它转换成相对应的数字并输出...
include <stdio.h> int main(){ char() c;while(1){ printf("input:");c = getchar()();getchar()();if(c == 'N')\/\/如果输入大写的N 就退出了 这个你自己随便设置 break;if(c >= '0'&& c <= '9')c = c - 48;printf("%d\\n",c);} system("pause");return 0;} ...

c语言二级问题 若有程序段"char c=256;int a=c;",则执行该程序后a的值...
256 整数的二进制表示是 0000 0001 0000 0000, 转成char会被截断, 只保留低8位, 也就是0;

C语言,char字符型的取值范围是0-255,表示的是只有255字符(难道计算机只有...
其实是这样算的,CHAR字符型数值表示以一个字节为基准(一个字节8位)那按照二进制推算(2的8次方是256),因为是无符号字符型所以是0-255 当255再加1时,就会溢出,此时得到的结果为0。 而如果是有符号,则第7位(即最高位做为符号位 1为负,0为正)所以此时得到的数值就该在-127-127之间。

C语言的例题,其中putchar(c1-32)表示什么啊?为什么输出是A呢?书上说...
每一个整数都代表一个固定的字符,这就是ASCII码,具体楼主可以查查ASCII码表的解释。ASCII码表中,'A'的值是65,’a‘的值是97,所以'a' - 'A'就是97 - 65 = 32。至于\\101这个是一个转义字符,\\开头的代表后面是8进制数,8进制101就是10进制的65,所以打印出来也是’A‘。

一道C语言题,当unsigned int为65535时,int为什么是-1,char为什么...
假设你的编译器int占2个字节:65535在内存中是1111111111111111 无符号整数就是65535,有符号最高位是1表示负数,实际表示的数是符号位不变,其余取反再加1就是-1。char是一个字节,所以只有11111111 最高位符号位,1111111表示127就是x的ASCII码。

相似回答