mak*_*ghi 14 c performance pointers pointer-arithmetic
我假设当我们写:(arr[i]相当于*(arr+i))时会发生内部强制转换.因为i例如可以是一个short,int或long或任何这些三个无符号的变体.
所以我的问题很简单:哪种类型应该i不会发生内部转换?这样代码可以最有效地运行?
粗猜:size_t?
它不太可能对性能产生任何重大影响。无论如何,您应该始终使用语义上正确的类型,而不是试图对不重要的事情进行过早的优化。就索引而言,是先验size_t正确的最小类型,但如果您知道正在使用的数组是有界的,则可以使用较小的类型。通常情况下,为了安全起见,你应该使用它。size_t