【问题标题】:Problems with cout c++ [duplicate]cout c ++的问题[重复]
【发布时间】:2019-08-11 16:07:44
【问题描述】:

我刚刚在 youtube 上观看了有关 akm 功能的视频,我试图实现它。
我实际上写了一个代码,忘记在变量之间留空格(为了便于阅读),但程序没有打印任何东西,但它一直在计算。

我认为类似的语法可以正常工作。是不是我做错了什么?
这是代码:

#include <bits/stdc++.h>
using namespace std;

int akm(int m,int n) {
    if(m==0) return n+1;
    else if(n==0) return akm(m-1,1);
    else return akm(m-1 , akm(m,n-1));
}

int main() {
  for(int i=0;i<6;i++)
      for(int j=0;j<6;j++) {
          cout<<i<<" "<<j ;
          cout<<akm(i,j);
      }
 }

【问题讨论】:

  • 无关:#include &lt;bits/stdc++.h&gt; using namespace std; 引导我建议您观看不同的视频。错误想法的组合可能会导致令人震惊的奇怪错误。阅读Why is “using namespace std” considered bad practice?Why should I not #include <bits/stdc++.h>?,了解更多关于为什么你不想单独使用这两种语句的信息。
  • 看起来不错。你说它根本不打印任何东西?
  • 您确定您的程序不会花费很长时间吗?您不会在每次写入时都刷新,所以它只会在程序退出时刷新
  • 是的,我也在许多平台上尝试过,但一如既往没有输出
  • ack(4,2) 超出了 int 的限制。

标签: c++ cout


【解决方案1】:

您可能需要显式刷新输出流或打印换行符,这可能会刷新某些流上的缓冲区:

std::cout << std::flush;

std::cout << std::endl;

【讨论】:

  • FWIW, endl 不只是打印换行符。它还会刷新缓冲区。
  • 它正在工作。但为什么会这样呢?因为我以前从未见过它
  • 默认情况下输出是缓冲的,直到缓冲区满或显式刷新后才会发送。分块写入数据效率更高。
猜你喜欢
  • 1970-01-01
  • 2011-01-25
  • 2020-08-12
  • 2013-02-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多