typedef unsigned int size_t;
size_t 其实是一个无符号的int;
在对于数组的循环中, 貌似很有用, 因为数组的下标都是 0, 1, 2......, 不可能是负数.
下面是这个陷阱的示范:
int limit = -1;
for(size_t i=0; i < limit; ++i){
cout << i << endl;
}
这段代码里面的循环体貌似不会被执行, 因为 0 > -1 , 实际是这样吗? NO, 你只会看到屏幕中的数字拼命冒出!
原因就在于 i < limit 这里, 这个limit 的类型已经不是int 了, 而是被隐式转换为 unsigned int.
i < (unsigned int)limit,
看看 cout << (size_t)-1 << endl;
在我的电脑上是显示 4294967295 . 哈哈, 示范中的循环次数太恐怖了!
如果用 size_t, limit 这类的变量最好做一下判断, 或者用int.