一道C语言题目,可以帮忙解释一下解题过程吗

[复制链接]
查看11 | 回复7 | 2007-6-29 15:30:08 | 显示全部楼层 |阅读模式
c = a + c++; 中先c = a + c; 然后c++;k = f(a++)调用两次第一次k = f(a++)时传入2, c = 2 + 0; c++ = 3, a = 3;第二次k = f(a++)时传入3, c = 3 + 3 = 6; c++ = 7
回复

使用道具 举报

千问 | 2007-6-29 15:30:08 | 显示全部楼层
第一次循环循环前 a=2,c=3(2+0,然后自增1) k=3循环后a=3第2次循环循环前 a=3,c=7(3+3--因为是static所以第一次循环的3保留值,然后自增1) k=7循环后a=4
回复

使用道具 举报

千问 | 2007-6-29 15:30:08 | 显示全部楼层
第一次执行到f(a++)是,a=2进入函数,c=0;c=a+c=2c++return c=3;f(a++) a=3c=0;c=a+c=3c++return c=4两次结果相加=7
回复

使用道具 举报

千问 | 2007-6-29 15:30:08 | 显示全部楼层
这里的static定义,相当于定义一个函数外变量,可能你不得不理解关键字:static.ps.使用中最好指定c的类型,指定函数f的返回值类型 :>
-----------------------------------------------------------
main函数:
循环:
i=0时:a=2 ,进入f函数,c=0 ,运算:c = a c
改变c的值,c=3跳出函数f,进行a操作,a = 3 ,k = 3i=1时:a=3 , 进入f函数,c保留上次结果 即,c = 3
运算:c = a c
改变c的值,c=7 跳出函数f,进行a操作,a = 4 ,k = 7打印k值: 7-----------------------------------------------------------
回复

使用道具 举报

千问 | 2007-6-29 15:30:08 | 显示全部楼层
是的,static变量仅初始化一次,下次在遇到static c=0; 时,c不会重新赋值为0,而是上次c的值,这就是静态变量的特点我怎么算 得8呢?哈哈!!···················看来西方惨败答对了想你学习!
回复

使用道具 举报

千问 | 2007-6-29 15:30:08 | 显示全部楼层
主要问题出在两个++上,因为有两次循环,第一次计算后C=3,第二次计算时a加一变为3,经过c=a+c++后结果就为7了,因为C再次加一
回复

使用道具 举报

千问 | 2007-6-29 15:30:08 | 显示全部楼层
就是6++(--)后缀等价于在执行问该语句后,变量自增1
回复

使用道具 举报

千问 | 2007-6-29 15:30:08 | 显示全部楼层
我算了半天 不清楚哦
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行