代码之家  ›  专栏  ›  技术社区  ›  Judal

缓慢出现打印,C99[副本]

  •  -1
  • Judal  · 技术社区  · 9 年前

    我想做一个类似于printf的函数,但这会使文本显示缓慢,方法是使用double for,一个用于打印字符,另一个用于花费时间:

        char phrase[30]={"Printf random"};
        for(int a=0;a<=30;a++){
            printf("%c",phrase[a]);
            for(int t=0;t<=1000000;t++){
                int f;
                f++;
            }
        }
    

    但当我运行时,一开始需要几秒钟(第二次为),然后打印所有短语。

    为什么每次第一个不进入第二个呢? 也许一旦程序第一次计算第二次,就不用花时间再计算了?我怎么能修好它?

    2 回复  |  直到 9 年前
        1
  •  0
  •   Sourav Ghosh    9 年前

    首先,在你的代码中

     for(int a=0;a<=30;a++){    
    

    你差一点就离开了 undefined behavior 。应该是

     for(int a=0;a<30;a++){
    

    也就是说,您需要刷新输出缓冲区,才能将缓冲区内容实际发送到相关文件。否则,标准输出实际上是行缓冲的,它不会自动刷新内容。所有内容将存储在缓冲区中,当程序即将完成时,所有打开的缓冲区将被刷新,然后整个内容将全部显示。

        2
  •  -1
  •   Rishikesh Raje    9 年前

    这个 int f 应该在第二个for循环之前。您正在创建一个新变量 f 每次循环并递增新变量。

    在这种情况下,它的工作原理是循环中没有其他变量。因此,每次在循环中,变量 f 将在相同的内存位置创建,并具有旧值。

    如果您有一个包含多个 if 条件

    另外,正如其他人提到的,您需要刷新输出。