Avatar ·

unsigned int vs. size_t: cuál es la diferencia y qué es mejor usar en C++?

Hola, colegas. Soy un desarrollador principiante de C++ y no logro entender la diferencia entre `unsigned int` y `size_t`. Parece que ambos son tipos enteros sin signo, pero constantemente veo que en diferentes lugares se usa uno u otro. Por ejemplo, escribo un programa simple para contar elementos en un vector: ```cpp #include #include int main() { std::vector numbers = {1, 2, 3, 4, 5}; unsigned int size = numbers.size(); // Se compila, pero ¿advertencia? for (unsigned int i = 0; i < size; ++i) { std::cout << numbers[i] << std::endl; } return 0; } ``` El compilador emite una advertencia sobre la discrepancia de tipos en la comparación `i < size`, aunque ambos parecen `unsigned int`. Pero si escribo `size_t size = numbers.size();`, todo está bien. También he oído que `size_t` puede ser de 64 bits en sistemas de 64 bits, mientras que `unsigned int` solo es de 32 bits. ¿Es esto cierto? Y si es así, ¿no llevará el uso de `unsigned int` a errores al trabajar?