特别是在C语言中,对数据的要求比较严格,对于我们自身而言,如果连数据的范围都不清楚,就很容易犯错,以下是我的一些理解,希望能让自己再加深下理解和记忆:

unsigned int a;

printf("%u",a);  //能表示的最大数是2**32-1 也就是4294967295

很好理解,比如二进制的两位数最大能表示2**2-1=3.十进制同样,最大能表示10**2-1= 99.

最小的自然就是0了。

这是对于无符号的,那么:

int a;

printf("%d",a);  //能表示的最大数就是2**31-1=2147483647;

//能表示的最小数是-(2**31)=2147483648;

如果在声明的时候没有刻意的去说明是无符号类型,通常系统都默认是有符号的去处理。

同样道理,如果对于char,long,也是一样的。