#include "stdafx.h"#include <iostream>int func_A();int func_B();voID func_C(int a,int b);int main(){ func_C(func_A(),func_B()); return 0;}int func_A(){ std::cout << "in Function A" << std::endl; return 1;}int func_B(){ std::cout << "in Function B" << std::endl; return 2;}voID func_C(int x,int y){ std::cout << x + y;}
输出:
在功能B中
在功能A中
3
为什么首先调用func_B?我在c#中尝试了相同的程序,其中func A首先被调用.
解决方法 C标准规定,不能保证首先执行函数调用参数中的哪一个语句.这对编译器的优化器是可以决定的.所以你不应该依赖它.即使在两个不同的电话中,它也可能不同.此外,如果您现在编译代码并且它按预期工作,则无法保证它在下一个版本或同一编译器的下一个版本中的工作方式相同.
但正如马丁在评论中提到的那样:“另一方面,C#确实要求评估的顺序”
总结以上是内存溢出为你收集整理的C函数调用中参数括号()的相关性全部内容,希望文章能够帮你解决C函数调用中参数括号()的相关性所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)