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

标签 c

我经常看到两种编写 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/

相关文章:

C - 一维数组组的最大值

c - 如何在c中获取向特定IP地址发送数据包的接口(interface)名称

c - 整理文件输出问题

c - 如何查阅具有许多参数和谐波函数的 GSL ODE

将字节数组转换为 double - c

c - 将结构文字作为函数参数传递时出现问题

c - 如何遍历由指针创建的字符串

c - 我的回调结构不起作用

c - C语言中的 map 数字

C 编程检查缓冲区中的消息