c++中cout函数的问题
intfram(){staticintf=0;f=f+1;returnf;}intmain(){cout<<fram()<<fram()<<fram()<<endl;co...
int fram()
{
static int f = 0;
f = f + 1;
return f;
}
int main()
{
cout << fram() << fram() << fram() << endl;
cout << 1 << 2 << 3 << endl;
cin.get();
return 0;
}
这两条 输出为什么 是:
321
123
?? 展开
{
static int f = 0;
f = f + 1;
return f;
}
int main()
{
cout << fram() << fram() << fram() << endl;
cout << 1 << 2 << 3 << endl;
cin.get();
return 0;
}
这两条 输出为什么 是:
321
123
?? 展开
2个回答
展开全部
这个C++标准只规定了<<的优先级和结合性,并没有规定它的求值顺序,所以这个是由编译器自己决定先计算哪个的,不过一般不会在一个表达式中使用了一个对象,而在子表达式中改变这个对象的值。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
<< 中的 计算过程为 从右到左 。
cout << fram() //第三次调用
<< fram() //第二次调用
<< fram() //第一次调用
<< endl;
追问
那么 为什么 cout<<1<<2<<3<<endl;
的输出是:
1 2 3
??
xiexie
追答
cout << fram() << fram() << fram() << endl;
// 等效于:
int val1 = fram();//第一次调用
int val2 = fram();//第二次调用
int val3 = fram();//第三次调用
cout << val3 << val2 << val1 << endl;
// cout 输出内容顺序是 符合 看到的 自左向右 的顺序的
// << ... << 中的 计算过程 则 为相反的顺序
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询