我经常看到两种编写 for 循环的方法。
第一个:
for (int i = 0; i < 10; i++) {
......
}
第二个:
int i;
for (i = 0; i < 10; i++){
......
}
这两种方法在执行效率上有区别吗?
最佳答案
正如其他人已经指出的,区别在于范围,并且在许多情况下,程序的效率没有差异。
为了能够调试代码并推断其正在执行的操作,通常建议在尽可能小的范围内存在变量。变量存在的时间越长,您可以对其执行的意外操作就越多。如果循环后不需要 i
,请将其范围限制在本地循环。
考虑只打印一个整数数组:
void print_array(int *arr, size_t n) {
for (size_t i = 0; i < n; ++i) {
printf("%d\n", arr[i]);
}
}
但是假设我们想要在 int 数组中查找某个值的索引(i
为 n
表示未找到该值):
size_t find_index(int val, int *arr, size_t n) {
size_t i;
for (i = 0; i < n && arr[i] != val; ++i) {
// Nothing required here.
}
return i;
}
在后一种情况下,在循环完成后需要 i
的值,因此无法将其范围限定在本地循环。
关于c - 在C语言中,这两个for循环有什么区别吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70602338/