假设我想使用for
循环在C中打印五次消息。为什么如果我在for循环之后添加一个分号,如下所示:
for (i=0;i<5;i++);
邮件没有被打印5次,但是如果我不把分号放在那里呢?
答案 0 :(得分:23)
分号是一种称为空语句 * 的合法语句,表示“不执行任何操作”。由于for
循环执行单个操作(可能是{}
中包含的块),因此分号被视为循环体,导致您观察到的行为。
以下代码
for (i=0;i<5;i++);
{
printf("hello\n");
}
解释如下:
for (i=0;i<5;i++)
{
}
如您所见,重复的操作是;
,而不是printf
。
答案 1 :(得分:8)
for (i=0;i<5;i++);
相当于
for (i=0;i<5;i++){}
答案 2 :(得分:3)
仅包含;
标记的语句称为 null语句,它只是......没有。
例如,这是有效的:
void foo(void)
{
;
;
;
}
它可以在任何可以使用语句的地方使用,例如:
if (bla)
;
else
;
参见C标准段落:
(C99,6.8.3p3)“空语句(仅由分号组成)不执行任何操作。”
答案 3 :(得分:1)
以下代码将打印“Hello”5次..
for(i=0;i<5,printf("Hello\n");i++);
答案 4 :(得分:0)
许多编译器在for循环后添加分号时会显示语法错误但是根据gcc编译器(Linux)或Dev-cpp,你可以在for循环后加一个分号,它不会显示任何错误。
例如
for(int i=0;i<=5;i++);
或
for(int i=0;i<=5;i++)
{//blank body}
从上面的例子可以清楚地看出,在for循环之后我们是否输入了空白括号或分号,这意味着我们还没有输入任何变量。
现在回答你的问题 如果要打印hello五次,则必须将程序编写为
for(int i=0;i<5;i++)
{
printf("hello");
}
我希望你理解
欢呼!
Rahul Vashisth
答案 5 :(得分:0)
#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
,因为花括号内的代码执行一次。