c语言中无符号(unsigned)和有符号(signed)的区别

1.最大区别就是在于那个符号位

int是 两字节 16位 但是有效位为15 第1位为符合位
unsigned int 的有效位为16 但是不能表示负数的
例如:int 1111 1111 1111 1111和unsigned int1111 1111 1111 111是不一样的
前者是 -1后者是65535


2.表示的范围不同


【c语言中无符号(unsigned)和有符号(signed)的区别】无符号整形只有0和正数,没有负数,正数的上限扩大一倍(占用了负数的空间)

比如 char 的范围是 -128 - 127
那么 unsigned char的范围就是 0-256


    推荐阅读