【发布时间】:2010-11-26 01:02:30
【问题描述】:
我正在试验什么可以放入 C 中的 for 循环声明中以及如何使用它。我尝试了以下方法:
#include <stdio.h>
int stupid(int a)
{
if(a == 3)
return 1;
else
return 3;
}
int main(void)
{
int i, j;
for(i=0; stupid(i)==3,i<10; i++)
printf("%d\n", i);
return 0;
}
当我运行程序时,它只打印从 1 到 10 的数字,如果我在 stupid(i)==3 和 i<10 之间使用 && 而不是逗号,那么程序只会打印最多 3 的数字。为什么?
我不太明白这是如何工作的,我希望循环传递所有数字并“跳过”3,但继续到 10,但这并没有真正发生。为什么会这样?是否有一些网站可以更清楚地解释这一点?
【问题讨论】:
-
如果要跳过三个,必须在
printf前面加上if (i != 3)。循环将在检测到i == 3时立即终止,否则不会跳过其中的所有函数。我不完全确定这是否能回答您的问题。 -
是的,我知道,但我想以某种方式将条件放入 for 循环声明中。
-
您可以将
if与for放在同一行,并且只有一组大括号 - 实际上是一个 for 循环,有条件地跳过某些项目而不退出。但是,在您的情况下,无论如何,您在循环中只有一个语句。您仍然需要if来跳过特定项目而不停止循环,但是如果没有大括号,您将看不到单个块构造的视觉外观。 -
如果你想在
for循环中使用它,它应该是这样的:for(i=0;i<10;i += (i == 2 ? 2 : 1)) printf("%d\n",i);。请注意,这是可怕的,如果你曾经把它交给家庭作业,原则上我会让你失望。