代码改变世界

cout输出流的执行顺序

  youxin  阅读(502)  评论(0编辑  收藏  举报

一道题目:

复制代码
#include <iostream>
using namespace std;

int g = 0;
template<typename T>
int foo()
{
    int value = ++g;
    return value;
}

int main()
{
    cout << foo<int>() << foo<char>() << foo<float>() << foo<double>() << endl;

    return 0;
}
复制代码

结果是1234,而是4321。百思不得其解,后来在网上搜了下,发现cout的输出顺序有如下规律:

 

计算顺序:自右至左

输出顺序:自左至右

 

也就是说cout在计算的时候是先计算foo<double>()的值为1,再计算foo<float>()的值为2,。。。所以输出是4321。

 

点击右上角即可分享
微信分享提示