我对C语言中的for循环问题感到困扰。
我写的时候:
#include<conio.h>
#include<stdio.h>
main()
{
int i = 0;
for( ; i ; )
{
printf("In for Loop");
}
getch();
}
输出:没有打印。
执行代码,但由于条件而无法打印printf语句。好的,这里没问题。
但是当我写这段代码时:
#include<conio.h>
#include<stdio.h>
main()
{
for( ; 0 ; )
{
printf("In for Loop");
}
getch();
}
输出:In for循环。
我的for循环执行了一次,但实际上它不能被执行。我不知道为什么? stackoverflow的编码器/程序员/黑客可以帮助我。请解释一下,为什么我的for循环只给出一次这个输出。
答案 0 :(得分:12)
你写的内容不应该打印任何内容,但我怀疑导致问题的实际二次代码(不是你输入的内容)是:
for( ; 0 ; ); // <==== note the trailing semicolon there.
{
printf("In for Loop");
}
在这种情况下,for循环不执行空语句,然后{ }
代码执行一次。
编辑:如果这不是问题,请将一个完整的程序直接粘贴到您的问题中。
EDIT2:
以下最小的可编辑示例不会打印任何内容:
#include <cstdio>
int main()
{
for( ; 0 ; )
{
std::printf("In for Loop");
}
}
答案 1 :(得分:1)
两种方式都不应该输出任何东西。
答案 2 :(得分:0)
我无法在我的机器上复制此行为,使用gcc进行编译。这两个计划是:
#include <iostream>
int main()
{
for( ; 0 ; )
{
std::cout << "Here I am!";
}
std::cout << "End of the program.";
}
输出
End of Program
和
一样#include <iostream>
int main()
{
int i = 0;
for( ; i ; )
{
std::cout << "Here I am!";
}
std::cout << "End of Program";
}
这是我们期望发生的事情,因为0读取循环连续条件被评估为false,因此永远不会输入循环。