指数始终是非负的,因此我尽可能使用size_t
。为什么使用有符号整数呢?它背后的基本原理是什么?
答案 0 :(得分:3)
我认为这主要是由于几个原因共同作用的结果:
int
基本上被认为是当天的“机器词”(可能仍然是许多人)。所以它是一种“默认类型”,你没有进一步思考就使用它。int
比unsigned
或(unsigned int
)好得多。答案 1 :(得分:1)
如果你的意思是
for(int i=0; i<n; i++)
然后没有理由。邋,懒惰的程序员编写邋code的代码,就这么简单。
除非使用负数,否则类型应该是一些合适的无符号类型。如果迭代器用于索引数组,则size_t
。否则uint_fastn_t
,其中&#34; n&#34;应该足够大以包含迭代的所有值。
答案 2 :(得分:0)
无符号类型在0
处有一个主要的不连续性,对于某些循环使用签名类型(如向下运行索引),程序员更安全。我们经常看到这个:
for (int i = n - 1; i >= 0; i--) {
...
}
在上面的循环中使用无符号类型失败。有一些方法可以用无符号类型编写这样的循环,但是许多程序员会发现它不那么直观:
for (unsigned i = n; i-- > 0; ) {
...
}
此外,索引不一定是无符号的:负指数可以与C指针一起使用,并且编写一些算法来利用这一点。
广泛使用int
的原因是历史:size_t
是在游戏后期引入的,最近才变得大于unsigned
,除了一些较旧的异域系统。 / p>