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,需要看下你输出的实际代码才能解读
char * a[]=128;
这是个啥,指针数组怎么能赋值成128,这妥妥的野指针
char类型取值范围-128到127,你给它赋值128溢出了
而指针的类型是指针,它本质上是个内存地址
char * a[]=128;
?这……不报错?