更多课程 选择中心

C/C++培训
达内IT学院

400-996-5531

C语言函数求参数顺序问题

  • 发布:C++培训
  • 来源:计算机二级C语言
  • 时间:2019-12-04 16:14

首先,看一道某年全国二级C语言考试的选择题。

问以下代码输出结果

int func(int a,int b)

{ int c;

c=a+b;

return c; }

main()

{ int x=6,r;

r=func(x,x+=2);

printf("%d\n",r); }

选项大概是 12、14、16、 有误无法运行。

选 14的人占多数,还有不少认为有误无法运行的。

首先,这段代码是可以执行的。

这道题谈不上难,但不知道的就会错。

这道题答案是16。

C语言函数求参数顺序问题

对于函数的参数,在计算的时候是按照从右往左的顺序进行的。

对于函数func,先求右边x+=2参数,返回x=8,然后计算结果。也就是传递给形参的两个值都是8,返回值为16。

下面我们写程序验证下,并结合自增自减运算升级下难度。

思考下面程序执行结果:

#include<stdio.h>

void fun(int m,int n)

{

printf("%d+%d\n",m,n);

}

int main()

{

int a=100;

fun(a,a+=2);

printf("%d,%d,%d\n",++a,a--,++a);

printf("%d\n",a);

return 0;

}

根据上面讲到的内容,你要想到的是printf也是函数,参数计算也要按照从左往右。但这时候涉及到++,多数同学就又会弄不清了。我们看下执行结果,帮助大家理解。

C语言函数求参数顺序问题

首先,第一行验证了传递给形参的值都是a加2之后值102.

第二行,按照从右往左,第一个是先让a的值+1,输出103。第二个还是a 103。但下一步是先让a的值-1,再计算左边的参数,还是别的呢?

根据运行结果,我们知道是先计算左边参数,a的值+1输出104,然后用完了以后a的值-1。

最后一行输出103也验证了是最后执行a的值-1。

本文内容转载自网络,本着分享与传播的原则,版权归原作者所有,如有侵权请联系我们进行删除。

预约申请免费试听课

填写下面表单即可预约申请免费试听!怕钱不够?可就业挣钱后再付学费! 怕学不会?助教全程陪读,随时解惑!担心就业?一地学习,可全国推荐就业!

上一篇:用C求数组中的最大值的简单代码
下一篇:C++中类定义时不允许使用不完整的类型错误提示原因分析

超全的C语言标识符知识

C指针——指针类型转换

C指针——指针和结构类型的关系

C指针——数组和指针的关系

Copyright © 2023 Tedu.cn All Rights Reserved 京ICP备08000853号-56 京公网安备 11010802029508号 达内时代科技集团有限公司 版权所有

选择城市和中心
黑龙江省

吉林省

河北省

湖南省

贵州省

云南省

广西省

海南省