整型的每一种都有无符号(unsigned)和有符号(signed)两种类型,在默认情况下声明的整型变量都是有符号的类型(char有点特别),如果需声明无符号类型的话就需要在类型前加上unsigned。无符号版本和有符号版本的区别就是无符号类型能保存2倍于有符号类型的数据,比如16位系统中一个int能存储的数据的范围为–32768 ~ 32767(16位2进制的最高位作为符号位‘1’为负‘0’为正),而unsigned能存储的数据范围则是0~65535(这个最高位不用做符号位,所以是2的16次方,一共65536)。由于在计算机中,整数是以补码形式存放的。根据最高位的不同,如果是1,有符号数的话就是负数;如果是无符号数,则都解释为正数。同时在相同位数的情况下,所能表达的整数范围变大。另外,unsigned若省略后一个关键字,大多数编译器都会认为是unsigned int。
在sql语句中的意义
sql语句中,创建一个数据表时
ceate table user{
user_id int unsigned...
...
}
当中的unsigned表示,数据项user_id恒为正整数。
unsigned 是无符号修饰符!可以修饰 int, char, long, short
只写 unsigned 默认为unsigned int .
unsigned char 用在需要将char用于运算的程序中。
举例说明:
char a = -1;
int b = 10;
int c= a*b; // 在某些编译器下 c == -10,在某些编译器下c==2550
unsigned char a=-1;
int b =10;
int c = a*b; //在所有编译器下 c == 2550
如果不将char类型参与运算,那么是否使用unsigned 都对程序没有任何影响。