gpt4 book ai didi

c - 在C语言中,这两个for循环有什么区别吗?

转载 作者:行者123 更新时间:2023-12-02 01:48:39 28 4
gpt4 key购买 nike

我经常看到两种编写 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 数组中查找某个值的索引(in 表示未找到该值):

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/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com