国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C++ > 正文

淺析C++中cout的運行機制

2020-01-26 15:47:25
字體:
來源:轉載
供稿:網友

復制代碼 代碼如下:

#include <iostream>
using namespace std;
int hello1();
int hello2();

int main()
{
    int a, b;
    cout<<"a="<<hello1()<<" b="<<hello2()<<endl;
    return 0;}

int hello1()
{
    cout<<"hello1"<<endl;
    return 1;
}
int hello2()
{
    cout<<"hello2"<<endl;
    return 2;
}


最終輸出是:
hello2
hello1
a=1 b=2

一時讓人有點難以琢磨,網上給出了其靠譜的解釋:cout流的操作順序是:先從右往左讀入緩沖區,然后再從左往右輸出。所以它從右邊往左讀的時候,碰到了函數當然去執行函數先了,然后把函數返回值讀入緩沖區再然后。。。就是從左輸出了。

根據這個解釋,有實驗的幾個程序,能加深點理解

程序1:

復制代碼 代碼如下:

#include <iostream>
using namespace std;
int main()
{
    int b[2]={1,2};
    int *a=b;
    cout<<*a<<" "<<*(a++)<<endl;
    return 0;
}

輸為出:2 1。
解釋:先讀入*(a++),對于a++,是先讀入緩沖區,其自增,所以,此時緩沖區中的a是1,。再讀入*a,此時a已自增,所以讀入緩沖區的是2.

程序2:

復制代碼 代碼如下:

#include <iostream>
using namespace std;
int main()
{
    int i=5;
    cout<<i<<" "<<(i++)<<" "<<(++i)<<endl;
    return 0;
}

輸出為:7 6 6
解釋:從右往左,先是(++i),即先自增,再讀入緩沖區,為6。再是(i++),即先讀入緩沖區,為6,再自增。最后是i,讀入緩沖區為7.

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 拜城县| 双牌县| 珠海市| 大宁县| 郓城县| 闵行区| 尚义县| 嘉义市| 广东省| 宾川县| 九龙坡区| 浑源县| 北票市| 镇安县| 涿州市| 山东省| 五河县| 神池县| 塔河县| 青龙| 石屏县| 湘阴县| 沙洋县| 平泉县| 临清市| 涿鹿县| 盐城市| 安阳市| 六枝特区| 锡林浩特市| 奉节县| 赤壁市| 商丘市| 高安市| 五莲县| 句容市| 中山市| 景东| 阳东县| 天气| 卫辉市|