C语言问题
C语言问题
日期:2021-12-27 04:07:44 人气:1
1.a=65535 十六进制是0xFFFF
但如果unsigned int 类型是4字节的,你打印出来的依然是a=65535
如果unsigned int 类型是2字节的,这时就是-1了,因为计算机采取的是补码来保存数据的
a=65535 二进制就是1111 1111 1111 1111,这是补码,第一位是符号位,等于1时就表示是负数。111 1111 1111 1111 减1再取反就是000 0000 0000 0001 这就是十进制的1了
再加上负号就是-1了
但如果unsigned int 类型是4字节的,你打印出来的依然是a=65535
如果unsigned int 类型是2字节的,这时就是-1了,因为计算机采取的是补码来保存数据的
a=65535 二进制就是1111 1111 1111 1111,这是补码,第一位是符号位,等于1时就表示是负数。111 1111 1111 1111 减1再取反就是000 0000 0000 0001 这就是十进制的1了
再加上负号就是-1了