zoukankan      html  css  js  c++  java
  • C/C++中printf/cout 计算顺序与缓冲区问题

    1.printf/cout在同一个语句中都是从右向左计算的

    看如下的代码:

    1 #include <stdio.h>
    2 int main()
    3 {
    4     int i=0;
    5     printf("%d %d",i++,i++);
    6     printf(" %d",i++);
    7     return 0;
    8 }

    输出结果:

    1 0 2

    (第5行,先计算右边的i++,再计算左边的i++。所以输出时1 0)

    2.printf/cout 有行缓冲区

    直到缓冲区满,或者遇到换行符,或者程序结束,或者刷新缓存,才进行输出。

    C使用fflush(stdout)刷新缓冲区;C++中使用cout.flush()刷新缓冲区。

    看如下的代码:

     1 #include <iostream>
     2 using namespace std;
     3 int main()
     4 {
     5     int i=0;
     6     cout<<i++<<","<<i++;
     7     //cout.flush(); //刷新缓冲区
     8     while(1){
     9         //break;
    10     }
    11     return 0;
    12 }

    执行程序(linux):

      没有任何输出,因为没有遇到换行符、程序也没有结束。

    把第7行的注释取消掉,进行刷新缓冲区就可以看到执行结果:

      1 0

    参考链接:

    http://hi.baidu.com/wjtk007/item/5eb65c03c0dd97066c9048c7

  • 相关阅读:
    在k8s中部署jenkins
    k8s CI/CD介绍
    k8s 构建jenkinsslave
    k8s 安全框架
    k8s RBAC介绍
    k8s 存储小结
    k8s 实施准备工作
    k8s 网络示例
    jenkins在kubernetes中动态创建代理
    k8s 鉴权 授权 准入控制
  • 原文地址:https://www.cnblogs.com/xudong-bupt/p/3653191.html
Copyright © 2011-2022 走看看