为什么C++中signed char x=-1和unsigned char x=-1用printf("%d\n",x)输出一个是-1,一个是255?
 那signed char x=-1 ;printf("%d\n",x);输出时是按补码转换成十进制还是并不是这样?
追答%d就是表示按十进制输出
追问我的疑问就是unsigned char x=-1 ;printf("%d\n",x);输出时是按补码转换成十进制的,可是signed char x=-1 ;printf("%d\n",x);输出是-1,如果按补码来按十进制输出不应该是-127吗?
追答额,signed char x=-1输出就是-1啊……你可以搜索一下知道补码如何求真值
就是11111111先求反码再+1,得到00000001,所以值是-1
好的谢谢
本回答被提问者采纳 那signed char x=-1 ;printf("%d\n",x);输出时是按补码转换成十进制还是并不是这样?
为何signed char和unsigned char x=-1printf("%d\\n",x)
-1在存储时,第一位是符号位,-用1表示,负数用补码存储,因此-1,存储的时候计为11111111。第一个有符号,读出为-1;第二个为无符号,此时8位都为数字位,读为255。
unsigned和signed char
编译器的比较的原理是从高位开始比较。因为unsigned x=1的最高位为0,而signed char y=-1的最高位为1,1>0,结束比较。所以得出来的结果是x<y。
c语言中signed 和unsigned是什么意思
1、signed是默认的,表示这个变量是有符号的,可以存储整数和负数。2、unsigned则需要显示给出表示这个变量,没有符号值能存储数的大小,而且不能表示正负。3、signed存储符号是有代价的,代价就是存储空间中的一个比特位专门用来存储符号,这一位不能表示数值。一般来说,同类型的signed能够存储的数的绝...
究竟C语言中的signed与unsigned有什么用
之所以输出结果都是-1 \\n 4294967295,是因为两个变量实际保存的内容是一样的,这个没有区别。而输出格式%d决定了实际显示。但在参与运算的时候,就完全不同了。
C语言的小问题
char到底是unsigned char还是signed char是由编译器决定的(有无符号不同编译器可能不一样)。假如是unsigned,那么便无法表示负数,而EOF一般是-1。这会导致上述比较永远不可能成立。而signed char虽然可以表示-1,但是getchar()可能会接收到值大于128的字符,虽然ASCII只有128个字符,但扩展的ASCII还有128...
unsigned char和signed char有什么区别?
深入理解,整型数据类型在C++中分为两种基本形态:无符号(unsigned)和有符号(signed)。除char类型外,其他数据类型的默认类型通常是带符号的,但通过在类型前添加"unsigned"关键字,我们可以明确地声明无符号类型。值得注意的是,许多编译器在遇到未明确指定类型的无符号变量时,会默认将其解释为unsigned ...
关于C语言中signed char的问题。
signed char,unsigned char都是显式声明的有符号\/无符号,而char可能是二者其中之一,由编译器决定。就是说,如果你写char,有可能是signed的,也有可能是unsigned的。但是绝大多数编译器是默认为signed的。值得注意的是,上面讲的是表示范围,但是无论是C还是C++,signed char、unsigned char、char是三种...
在C语言中长度相同的有符号与无符号整型数间,原样赋值时为什么值...
在c语言中无符号(unsigned)和有符号(signed),数据范围不同,无符号和有符号的区别就是有符号类型需要使用一个bit来表示数字的正负,从而导致负数或者超过signed int数据范围时,在两者中的表示值不同,示例代码如下,include <stdio.h> int main(int argc, char *argv[]){ unsigned a;int b=-...
c++中的数据类型有unsigned和signed是什么意思i?
3. 比较。排序。对一级汉字可用strcmp()以unsigned char形式比较按汉语拼音排序,说明成char则会出现比较错误。试看此程序:int main(){ char x=0x80;unsigned char y = 0x80;unsigned char z[]="你好";printf("x=%d, HEX=%2X, (x>>1)=%d, HEX=%2X.\\n", x, x, x>>1, x>>1)...
这些数据类型有什么区别?有符号和无符号之间有什么区别。
在C中,默认的基础数据类型均为signed,现在我们以char为例,说明(signed) char与unsigned char之间的区别。首先在内存中,char与unsigned char没有什么不同,都是一个字节,唯一的区别是,char的最高位为符号位,因此char能表示-127~127,unsigned char没有符号位,因此能表示0~255,这个好理解,8个...