c – 帮忙?为什么输出是这样的?

c – 帮忙?为什么输出是这样的?,第1张

概述#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() << end
#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;}

Output is “11 11 18”

解决方法 函数的评估顺序在C中未指定.在代码中:

cout << g() << " " << f() << " " << g() + f() << endl;

编译器可以发出代码来调用f(),f(),g(),g()然后添加结果.或者它可以做其他事情.

这与使用cout,BTW没有什么关系 – 如果你编写这样的代码:

x = a() + b() * c();

无法保证调用a,b和c的顺序.这是全局变量为坏事的众多原因之一 – 您通常无法预测将如何调用更改它们的函数.

总结

以上是内存溢出为你收集整理的c – 帮忙?为什么输出是这样的?全部内容,希望文章能够帮你解决c – 帮忙?为什么输出是这样的?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1223492.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存