这是一个相当愚蠢的问题,但是为什么在C或C++中定义一个for循环时,通常使用int
而不是unsigned int
?
for(int i;i<arraySize;i++){}
for(unsigned int i;i<arraySize;i++){}
我认识到在执行数组索引以外的操作时使用int
的好处,以及在使用C++容器时使用迭代器的好处.只是因为在数组中循环时并不重要吗?或者我应该避免使用所有的类型,而使用不同的类型,比如size_t
?
这是一个相当愚蠢的问题,但是为什么在C或C++中定义一个for循环时,通常使用int
而不是unsigned int
?
for(int i;i<arraySize;i++){}
for(unsigned int i;i<arraySize;i++){}
我认识到在执行数组索引以外的操作时使用int
的好处,以及在使用C++容器时使用迭代器的好处.只是因为在数组中循环时并不重要吗?或者我应该避免使用所有的类型,而使用不同的类型,比如size_t
?
这是一个更普遍的现象,通常人们没有为他们的整数使用正确的类型.现代C语言具有比原始整数类型更可取的语义typedeff.例如,所有"大小"的东西都应该只打成size_t
.如果系统地为应用程序变量使用语义类型,使用这些类型的循环变量也会容易得多.
我也看到了一些很难发现的bug,它们来自于使用int
个左右.突然在大型矩阵和类似的东西上崩溃的代码.只要用正确的类型正确编码就可以避免这种情况.