首页 > 代码库 > c++cout执行顺序之一个不容易注意到的一点
c++cout执行顺序之一个不容易注意到的一点
二话不说,先看一个例子
#include <iostream>using namespace std;int main(){ int a[10]={1,12,34,56,78,89,90,8,9,0}; int *p=a; int *p2=a; cout<<++*p<<endl; cout<<*++p<<endl;//谁靠的近先执行谁 cout<<endl; cout<<++*p2<<" "<<*p2<<" "<<*++p2<<endl; char *st[]={"asd","qwe","zxc"}; char**q=st; cout<<*++q<<endl; cout<<*q<<endl; return 0;}
运行结果
2
12
13 12 12
qwe
qwe
是不是很interesting,本来是探究++与解指针运算符*的优先级的问题,引发了一个有关cout执行顺序的问题。
其实这两的优先级一样都为2
为什么p2的输出就成了这个样子,而并不是我们所认为的2 2 12.
种种事实表明,cout的运行时候执行顺序是从右往左,是符合栈的执行模型的。再来个例子
#include <iostream>using namespace std;int f1(){ cout<<"f1"<<endl; return 1;}int f2(){ cout<<"f2"<<endl; return 2;}int f3(){ cout<<"f3"<<endl; return 3;}int main(){ cout <<"first--"<<f1()<<" second--"<<f2()<<" third--"<<f3()<< endl; return 0;}
可以看到运行结果为
f3
f2
f1
first--1 second--2 third--3
Process returned 0 (0x0) execution time : -0.000 s
Press any key to continue.
这明显证明cout在执行的时候为从右向左先执行,然后在输出的时候为按照原来的顺序在从左像右的输出。
c++cout执行顺序之一个不容易注意到的一点
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。