整型的每一种都分为:无符号(unsigned)和有符号(signed)两种类型(float和double总是带符号的),在默认情况下声明的整型变量都是有符号的类型(char有点特别),如果需声明无符号类型的话就需要在类型前加上unsigned。无符号版本和有符号版本的区别就是无符号类型能保存2倍于有符号类型的正整数数据,比如16位系统中一个short能存储的数据的范围为-32768~32767,而unsigned能存储的数据范围则是0~65535。由于在计算机中,整数是以补码形式存放的。根据最高位的不同,如果是1,有符号数的话就是负数;如果是无符号数,则都解释为正数。另外,unsigned若省略后一个关键字,大多数编译器都会认为是unsigned int。
size_t 类型定义在cstddef头文件中,该文件是C标准库的头文件stddef.h的C++版。size_t 是一个与机器有关的 unsigned 类型,其大小足以保证存储内存中对象的大小。size_t在C语言中就有了。它是一种“整型”类型,里面保存的是一个整数,就像int, long那样。这种整数用来记录一个大小(size)。size_t的全称是size type,也就是说“一种用来记录大小的数据类型”
在C++中经常见到size_t,定义size_t这种类型别名,只是为了让应用程序代码的可移植性高一些。如果代码中采用size_t来定义变量,则不用考虑平台变化带来的影响!
int main(int argc, char *argv[], char *env[])
{
int i1 = 1;
size_t j1= 2;
size_t j2 = i1;
int i2 = j1;
cout << j1 << endl;
bool b = (i1 < j1);
cout << b << endl;
system("pause");
return 0;
}
int和size_t可以相互转化,但是int和size_t做比较的时候会有警告,但仍能继续执行