printf () 的奇怪行为

weird behavior with printf ()

所以我无法让 printf 在嵌套 for 循环中输出任何内容

例如:

printf("hello ");
for(int i =0; i< 4; i++)
   for(int j = 0; j < 5; j++)
   printf("world");

这只会输出单词 hello 而无法输出单词 "world"。我尝试了 fflush(stdout),但似乎该命令无法解决问题。我正在使用 Mac。有人可以就如何解决这个问题提出建议吗?

您在 link link 中提供的代码存在的问题是

for( i = 0; i > m; i++)

您使用的条件是i > m,而它应该是i < m

假设您正在使用 printf 和循环进行输出实验。首先你有程序:

#include <stdio.h>

int main(int argc, char * argv[])
{
    printf("hello ");
    return 0;
}

并且此程序已成功编译并运行。

比你添加循环,比如:

#include <stdio.h>

int main(int argc, char * argv[])
{
    printf("hello ");
    for(int i =0; i< 4; i++)
       for(int j = 0; j < 5; j++)
            printf("world ");
    return 0;
}

然后按下 IDE 中的魔术按钮 - 这个按钮(或热键组合)应该会重新编译您的项目并启动您的程序....但它没有......只是 运行 之前编译的代码(没有循环)。

因此,请仔细检查来自编译器的消息,然后尝试以下操作(在每个步骤之后尝试编译并再次 运行 您的程序):

1) 将计数器声明放在程序的开头:

#include <stdio.h>

int main(int argc, char * argv[])
{
    int i;
    int j;
    printf("hello ");
    for(i = 0; i< 4; i++)
       for(j = 0; j < 5; j++)
            printf("world ");
    return 0;
}

2) 将包含源代码的文件重命名为 *.cpp

3) 清理并重建您的项目(这些是 IDE 的特殊选项,确保程序的所有预编译部分将被删除并构建新的部分)