C语言中使用signed和unsigned来修饰字符型和整型。
signed表示一个类型带有正负号,包含负值;
unsigned表示一个类型不带正负号,只包含0和正整数;
而对于int类型来说,是默认包含正负号的,也就是说int也就是signed int.
一般来说,signed都是省略不写的,当然,写了signed也是正确的.
表达形式如下:
signed int a;
//等同于int a;
而int 类型也可以不带正负号,只负责表示非负整数.当在这种情况下使用int时,就需要前面加上
unsigned来声明变量了.
unsigned int a;
//表示非负整数a,用unsigned来进行声明变量类型
那这两种表示都有什么优点和好处吗?
整数变量声明为unsigned的好处是,同样长度的内存能够表示的最大整数值,增大了一倍.
举例:
16位的signed short int的的取值范围是:-32768~32767,最大是32767;而unsigned short int 的取值范围是:0~65535,最大值增大到了65535.
同时,unsigned int 里面的 int 可以省略,所以上面的变量声明可以写成下面这样:
unsigned a;
对于字符类型 char 来说,也可以设置 signed 和 unsigned.
1 signed char c;//range:-128~127
2 unsigned char c;//range: 0~255;
注意, C语言里规定char类型默认是否带有正负号,由当前系统决定。
这就是说,char不等同于signed char,它有可能是 signed char,也有可能是unsigned char。
这点与int不同,int就是等同于signed int.所以如果怕记混的话,建议int 和 char 都养成写上signed 和 unsigned的习惯在初学阶段比较好.