for
假设我想使用循环在 C 中打印五次消息。为什么如果我在 for 循环之后添加一个分号,如下所示:
for (i=0;i<5;i++);
消息没有打印 5 次,但是如果我不把分号放在那里,它会打印吗?
分号是一个合法的语句,称为空语句 *,表示“什么都不做”。由于for
循环执行单个操作(可能是包含在 中的块{}
),因此分号被视为循环的主体,从而导致您观察到的行为。
以下代码
for (i=0;i<5;i++);
{
printf("hello\n");
}
解释如下:
for (i=0;i<5;i++)
{
}
如您所见,重复的操作是;
,而不是printf
。
for (i=0;i<5;i++);
相当于
for (i=0;i<5;i++){}
;
仅由标记组成的语句称为null 语句,它只是……什么都不做。
例如,这是有效的:
void foo(void)
{
;
;
;
}
它可以在可以使用语句的任何地方使用,例如:
if (bla)
;
else
;
请参阅 C 标准段落:
(C99,6.8.3p3)“空语句(仅由分号组成)不执行任何操作。”
下面的代码将打印“Hello”5次..
for(i=0;i<5,printf("Hello\n");i++);
当您在 for 循环后放置分号时,许多编译器会显示语法错误,但根据 gcc 编译器(Linux)或 Dev-cpp,您可以在 for 循环后放置分号,它不会显示任何错误。
例如
for(int i=0;i<=5;i++);
或者
for(int i=0;i<=5;i++)
{//blank body}
从上面的示例中可以清楚地看出,如果我们在 for 循环之后放置空括号或分号,这意味着我们还没有输入任何变量。
现在来回答你的问题。
如果要打印 hello 5 次,则必须将程序编写为
for(int i=0;i<5;i++)
{
printf("hello");
}
我希望你能理解
干杯!!
拉胡尔·瓦西斯
当 for 循环体仅包含单个语句时,则无需在 for 循环体{}
周围使用花括号。
for(i=0; i<5; i++)
{
printf("Napoleon");
printf("Bonaparte");
}
for(j=0; j<5; j++)
printf("Napoleon");
所以for(j=0; j<5; j++);
将自己评估为
for(j=0; j<5; j++)
;
所以这是一个带有单个语句的 for 循环,它是;
空语句。null 语句什么都不做。当循环运行 5 次时,null 语句执行 5 次,但它没有按照定义执行任何操作。
#include <stdio.h>
int main() {
int sum = 0; // variable initialization
int k = 1;
//for(int i = 1; i <= 10; i++);
{
sum = sum + k;
k++;
}
printf("The value of sum is %d", sum);
return 0;
}
如果 for 循环后面有分号,则花括号中的代码将被视为常规主体,并将正常执行。
在上面的程序中,我已经对for
循环进行了注释,它的作用与放在循环;
末尾相同for
。它打印总和,1
因为花括号内的代码执行一次。
它的功能与:
for(i=0;i<5;i++) {}
在这里,它在大括号内没有任何内容,只会将 i 的值增加到 5。 您可以使用下一行的 print 语句检查并获得 i=5。