C/C++培训
达内IT学院
400-996-5531
首先,看一道某年全国二级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。
对于函数的参数,在计算的时候是按照从右往左的顺序进行的。
对于函数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也是函数,参数计算也要按照从左往右。但这时候涉及到++,多数同学就又会弄不清了。我们看下执行结果,帮助大家理解。
首先,第一行验证了传递给形参的值都是a加2之后值102.
第二行,按照从右往左,第一个是先让a的值+1,输出103。第二个还是a 103。但下一步是先让a的值-1,再计算左边的参数,还是别的呢?
根据运行结果,我们知道是先计算左边参数,a的值+1输出104,然后用完了以后a的值-1。
最后一行输出103也验证了是最后执行a的值-1。
本文内容转载自网络,本着分享与传播的原则,版权归原作者所有,如有侵权请联系我们进行删除。
填写下面表单即可预约申请免费试听!怕钱不够?可就业挣钱后再付学费! 怕学不会?助教全程陪读,随时解惑!担心就业?一地学习,可全国推荐就业!
Copyright © 京ICP备08000853号-56 京公网安备 11010802029508号 达内时代科技集团有限公司 版权所有
Tedu.cn All Rights Reserved