我的问题是在一行代码中有两个for循环。例如:
void sieve(int N) {
bool isPrime[N+1];
for(int i = 0; i <= N;++i) {
isPrime[i] = true;
}
isPrime[0] = false;
isPrime[1] = false;
for(int i = 2; i * i <= N; ++i) {
if(isPrime[i] == true) {
// Mark all the multiples of i as composite numbers
for(int j = i * i; j <= N ;j += i)
isPrime[j] = false;
}
}
}
显然它确实用于二维数组或向量,但是它们会用于什么实际例子?因为很难在单独的行中显示行和列。此外,由于循环条件在同一条线上,因此它们会同时发生变化,这将更难控制整个过程。
很快,这个的实际目的是什么?
答案 0 :(得分:4)
简短的回答:使代码更难阅读的实际目的通常是没有(一行上有两个for
循环)。无论您使用:
for (int i; i > n; i++) for (int j; j > m; j++)
{
//Statements
myArray[i][j];
}
或
for (int i; i > n; i++)
{
for (int j; j > m; j++)
{
//Statements
myArray[i][j];
}
}
然而,除了混淆竞争之外,以难以阅读的方式编写代码对于可维护性,可读性和可调试性是不利的。上面的第二个选项更容易快速阅读和理解,并且更容易调试。
有许多样式指南涵盖了这一点,提供了“好”代码的示例,以及以某种方式编写代码的推理。
请查看以下链接的问题:programming style guide for C
答案 1 :(得分:0)
在一行上没有使用多个for循环的目的。
for (int i; i > n; i++) for (int j; j > m; j++) Statements
相当于:
for (int i; i > n; i++) {
for (int j; j > m; j++) {
Statements
}
}
删除大括号只会改变代码的样子。最后没关系。在某些情况下,它可以使您的代码看起来更清晰。