Avatar ·

unsigned int vs. size_t:区别是什么,在C++中哪个更好用?

大家好,我是一名初学C++的开发者,我一直搞不清楚 `unsigned int` 和 `size_t` 之间的区别。它们看起来都是无符号整数类型,但我经常看到在不同的地方使用不同的类型。 例如,我写了一个简单的程序来计算vector中的元素数量: ```cpp #include #include int main() { std::vector numbers = {1, 2, 3, 4, 5}; unsigned int size = numbers.size(); // 能编译,但有警告? for (unsigned int i = 0; i < size; ++i) { std::cout << numbers[i] << std::endl; } return 0; } ``` 编译器在比较 `i < size` 时给出了类型不匹配的警告,尽管两者看起来都是 `unsigned int`。但如果我写成 `size_t size = numbers.size();`,就没有问题。 我还听说 `size_t` 在64位系统上可能是64位的,而 `unsigned int` 只有32位。这是真的吗?如果是这样,使用 `unsigned int` 会不会在处理大数据时导致错误?