C 此代码中的异常是什么

C 此代码中的异常是什么,c,C,问题是它没有打印主文件。不管for循环中有什么,循环前有多少语句 在输出的末尾换行。没有它,文本将进入输出缓冲区,但不会刷新。您需要刷新输出: int main() { printf("main started"); for(;;) {} return 0; } 或者,通过\n字符终止字符串,因为大多数系统都有行缓冲标准输出。printf仅在刷新字符串后才打印该字符串。如果您在字符串中添加换行符,它会自动刷新数据\n尽管它通常有效,但无法保证!不要依赖它。当程序完

问题是它没有打印主文件。不管for循环中有什么,循环前有多少语句

在输出的末尾换行。没有它,文本将进入输出缓冲区,但不会刷新。

您需要刷新输出:

int main()
{
    printf("main started");
    for(;;) {}
    return 0;
}   
或者,通过\n字符终止字符串,因为大多数系统都有行缓冲标准输出。

printf仅在刷新字符串后才打印该字符串。如果您在字符串中添加换行符,它会自动刷新数据\n尽管它通常有效,但无法保证!不要依赖它。当程序完成时(从主函数返回或调用exit后),数据也会自动刷新

在您的情况下,由于for循环没有条件,程序永远不会完成,因此永远不会调用autoflush

如果你想刷新它,你可以通过调用fflushstdout强制刷新自己。退出时自动调用相同的函数

请参阅我之前询问的关于自动冲洗的标准保证的类似问题

使用printf打印的内容保存在缓冲区中。这意味着它不会立即发送到控制台。但是,此缓冲区会被刷新:

打印新行时\n, 如果你要求同花顺, 或者当缓冲区变得太满,并且自动刷新时。
因此,在您的情况下,要立即查看它,请添加一个fflushstdout或一个do printfmain start\n。

输出已缓冲。请提供更多信息。您使用什么编译器以及您正在使用的平台是什么?当然,for循环中的内容很重要:put return 0;其中,main是一种技术上的声明主入口点的方法,但是请使用int main {返回0;} GeoGeSL在C的当前版本中也没有技术上正确,也不在C++的任何版本中。所以同意你的结论,使用int main:或通过fflushstdoutA强制刷新并不保证刷新。thnx。。。它正在与\n一起工作,但我仍然不明白。它可以正常工作,但如果在它之后有一个永久循环,当main退出时,输出被刷新,它就不工作了。
fflush(stdout);