当我运行此代码时,它会迭代,但随后返回“答案为0”,此时它应为“答案为10”。
为什么会这样?
#import <Foundation/Foundation.h>
int main (int argc, const char * argv[])
{
int i;
for (int i = 0; i < 12; i++){
if (i % 3 == 0) {
continue;
}
printf("Checking i = %d\n", i);
if (i + 90 == i * i) {
break;
}
}
printf("The answer is %d.\n", i);
return 0;
}
答案 0 :(得分:8)
int i;
for (int i = 0; i < 12; i++){
^^^^^
循环内的i
与循环外的i
不同。
重申:
int i;
for (i = 0; i < 12; i++){
答案 1 :(得分:5)
您的代码中有两个单独的i
,内部隐藏了外部的i
。此外,print语句会导致未定义的行为,因为外部for (i = 0; i < 12; i++)
是未初始化的。
说{{1}}使用外部变量而不是声明一个新变量。
答案 2 :(得分:1)
您实际上是在i
循环内再次声明for
。像你这样循环:
for (i = 0; i < 12; i++)
然后,一旦退出循环,它将保留其值。
答案 3 :(得分:0)
您的代码中有两个单独的int i
声明。
答案 4 :(得分:0)
如果你想在for循环之外使用i,不要在for循环中声明它
所以你的for循环应该像
for (i = 0; i < 12; i++)