#include <iostream>using namespace std;int a = 8;int g(){ a++; return a - 1;}int f(){ a++; return a;}int main(){ cout << g() << " " << f() << " " << g() + f() << endl; system("PAUSE"); return 0;}
解决方法 函数的评估顺序在C中未指定.在代码中:Output is “11 11 18”
cout << g() << " " << f() << " " << g() + f() << endl;
编译器可以发出代码来调用f(),f(),g(),g()然后添加结果.或者它可以做其他事情.
这与使用cout,BTW没有什么关系 – 如果你编写这样的代码:
x = a() + b() * c();
无法保证调用a,b和c的顺序.这是全局变量为坏事的众多原因之一 – 您通常无法预测将如何调用更改它们的函数.
总结以上是内存溢出为你收集整理的c – 帮忙?为什么输出是这样的?全部内容,希望文章能够帮你解决c – 帮忙?为什么输出是这样的?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)