C++scanf、printf与cin,cout

   今天做作业时遇到一道题。
题目

一看,感觉很简单,只需要一个for,看看绝对值i % 2 是否 == 1,是的话直接输出i就行了。
代码:

  #include <bits/stdc++.h>
  using namespace std;
  int a, b, t;
  int main () {
      cin >> a >> b;
      for (int i = a; i <= b; i++)
          if (abs(i) % 2 == 1)
              t++;
      cout << t << endl;
      for (int i = a; i <= b; i++)
          if (abs(i) % 2 == 1)
              cout << i << endl;
      return 0;
  }(本代码仅适合GCC C++)
  
提交上去之后:
???

于是,我改用了scanf与printf。

  #include <bits/stdc++.h>
  using namespace std;
  int a, b, t;
  int main () {
      scanf("%d%d", &a, &b);
      for (int i = a; i <= b; i++)
          if (abs(i) % 2 == 1)
              t++;
      printf("%d", t);
      for (int i = a; i <= b; i++)
          if (abs(i) % 2 == 1)
              printf("%d", i);
      return 0;
  }
OHOHOHOHOHOH

那么,为什么C的scanf&printf比cin&cout快呢?
首先,printf&scanf是C的,而C++为了兼容C,将cin&cout与scanf&printf捆绑在了一起。可以关掉C++对C的兼容。其次endl这个家伙绝对没有人不知道,他一直在刷新缓冲区,导致运行变慢,若使用'\n'换行,速度绝对比你想象中的要快。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容