在使用in循环之前声明变量和在循环中定义变量时有什么区别。
我在谈论这种情况
int i;
for(i=0; i<100; i++);
和
for(int i=0; i<100; i++);
答案 0 :(得分:3)
在前一种情况下,您可以在for循环之外访问i
。如果循环中有条件中断,这可能是有利的,例如:
int i = 0;
for (i = 0; i < 100; i++) {
if (someUnexpectedConditionHappens()) {
break;
}
// do something
}
printf("The loop has been executed %d times", i);
答案 1 :(得分:2)
在第一种情况下,i
可以在for
循环之外访问。
在第二种情况下,i
的范围仅限于for
循环体。
可以说第二种情况可以提供更好的程序稳定性,因为在i
循环之外使用for
通常是无意的。
答案 2 :(得分:2)
它是&#34;范围&#34;。在第二种情况下,您只能在for循环中使用该变量。在第一种情况下 - 在整个包含块中。
答案 3 :(得分:2)
答案 4 :(得分:2)
在循环之前执行此操作时,变量也可在循环外部使用。 而当你在里面做它时,它是一个只能在循环中使用的局部变量。
此外,您可以在使用C99标准时在循环内声明变量。但它不适用于例如C90。所以要小心。
答案 5 :(得分:2)
在第一种情况下,假设在循环之后也将使用变量i
,例如
int i;
for(i=0; i<100; i++);
printf( "i = %d\n", i );
然而,编写以下方式会好得多
int i = 0;
for( ; i<100; i++);
printf( "i = %d\n", i );
在这种情况下,我们将获得一个有效的可读代码,而不需要打扰循环中的内容,例如
int i = 0;
/* some loop used i */
printf( "i = %d\n", i );
即使变量不会在循环中或在某些其他代码中而不是循环中更改(赋值)(通常每个代码都有改变的倾向),但我们将获得有效的结果。
在第二种情况下,假设变量i
将仅在循环中使用
for(int i=0; i<100; i++);
我们不需要它在循环之外的价值。所以在这种情况下,变量的寿命受到循环体的限制。在循环之外它将是隐形的而不是活着的。