-
方法 1 的优点是由于源代码中的文本字符较少,因此文件大小稍小:
int i, j;
for (i = 0; i < numRows; i++)
for (j = 0; j < numCols; j++)
//<some code here>
-
方法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
保证能够保存任何数组索引的整数类型。只是风格问题,但我还建议在所有循环体周围使用大括号。这使得您不太可能因不可避免的更新和更改而破坏代码。
通过养成像这样使用块作用域声明循环变量的习惯,您可以强迫自己choose使用代码中其他地方的循环变量中存储的值。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)