char * a[]=128;
char b=128;
指针数组可以存的数要大一些吗🤔
char b=128;
这个二进制 是1000 0000,起始位是1,代表负数的补码
在计算机中,整型数值是用补码表示的。
对于正数,补码就是原码,也就是本身的二进制值。
而负数,除符号位外,补码是其原码按位取反后加一。
char为一个字节,占8位。当值为1000 0000时,其最高位符号位为1,表示其为负数。真值为
0000000 按位取反后加一,即1111111+1 = 10000000
转为10进制就是128。于是char可以表示-128。
另外1000 0000 代表-0,有正0和负零,不浪费表示,自然就这样了,
所以b =128,输出了-128,
char * a[]=128; 这个本身编译应该报错的,你输出的是128,需要看下你输出的实际代码才能解读