gpt4 book ai didi

c - 为嵌套循环声明虚拟变量的更好方法是什么?

转载 作者:行者123 更新时间:2023-12-02 08:15:38 26 4
gpt4 key购买 nike

  1. 由于源代码中的文本字符较少,方法 1 的优点是文件大小略小:

    int i, j;
    for (i = 0; i < numRows; i++)
    for (j = 0; j < numCols; j++)
    //<some code here>
  2. 方法 2 的优点是局部变量的范围较小。

    int i;
    for (i = 0; i < numRows; i++)
    {
    int j;
    for (j = 0; j < numCols; j++)
    //<some code here>
    }

即使优化方面的差异在当今的现代计算机中可以忽略不计,哪种方法被认为是“更好”的代码?


编辑以澄清这个问题不是重复的:

这个问题是基于当前的 C11 标准,它不允许这样的语法:

for (int i = 0; i < numRows; i++)

在 C++ 和 C99 中,这种语法是完全可以接受的,而 C11 不允许在 for 语句中声明变量。


编辑以更正错误信息:

我以为我使用的是 C11,因为我最近从 CodeBlocks 下载了编译器,所以我说 C11 不允许在 for 语句中声明变量。但事实证明我实际上使用的是 C90,这是我问题的根源。

最佳答案

为了纯粹的紧凑性和范围的限制,我会使用:

for (size_t i = 0; i < numRows; i++) {
for (size_t j = 0; j < numCols; j++) {
//<some code here>
}
}

请注意使用 size_t 来表示数组索引。 size_t 类型是 unsigned 整数类型,保证能够保存任何数组索引。只是风格问题,但我还建议在所有循环体周围使用大括号。这大大降低了您因不可避免的更新和更改而破坏代码的可能性。

通过养成像这样声明具有 block 作用域的循环变量的习惯,您可以强制自己选择在代码的其他地方使用存储在循环变量中的值。

关于c - 为嵌套循环声明虚拟变量的更好方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42311188/

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