请教如下C++代码的含义?谢谢

intA(inta){inta=0,c;for(intb=1,c,i=2;i<=2;++i)c=a+b,a=b,b=c;returnc;}请问如果要是求斐波那锲数列的话,... int A( int a )
{
int a=0,c;
for(int b=1,c,i=2;i<=2;++i)
c=a+b,a=b,b=c;
return c;

}
请问如果要是求斐波那锲数列的话,应该是return a;
展开
 我来答
缇尊3932
2011-09-26 · TA获得超过5.7万个赞
知道大有可为答主
回答量:3.1万
采纳率:0%
帮助的人:4087万
展开全部
首先,从形式上看,A()是一个具有一个int型输入变量的函数,它返回一个int型值。但这
个函数有错误,不能通过编译。原因是:
1.int a=0,c;一行中对变量a重复定义,因为a函数的括号里已定义过;
2.for(int b=1,c,i=2;i<=2;++i)中对c的说明也是重复定义,不能通过编译;
如果删除int a=0,c;这一行,程序将能通过编译。这时它与下面的代码意义完全相同:
int A( int a )
{
int b=1,c,i;
for(i=2;i<=2;++i)
c=a+b,a=b,b=c;
return c;
}
由于for(i=2;i<=2;++i)的控制变量i初值为2,控制范围是i<=2,所以这个循还体只执行一次。又由于for(i=2;i<=2;++i)只有一条由逗号运算符连接起来的语句( c=a+b,a=b,b=c;),所以分
析这一条语句就可以了。
按C++规则,逗号运算符连接起来的表达式,执行时由左至右分别计算每一个表达式的值,
而整个表达式的值是最后一个逗号右边的表达式的值。但函数A()的返回值并不是整个表达式的
值,而只是最左边的表达式c=a+b的值,因为b的初值是1,所以返回值总是比调用值多1。而最
后a接受了b的值为1,b又接受了c的值为函数的返回值。
顺便说一句,C++提供了把变量定义写在for语句括号里的“写法”(注意只是写法),它与写在for语句前边(就象上面提供的代码)是完全对等的。
再说一下逗号表达式:如果将这句改成c=(a+b,a=b,b=c),那么c最后与b同值;可是b接受了c的值的,而c却没有赋初值,是不确定的。这在C++中编译时不提醒出错,但执行后就会出现很
奇怪的结果。可要注意哟……
wince159
2011-09-26 · 超过15用户采纳过TA的回答
知道答主
回答量:94
采纳率:0%
帮助的人:47.6万
展开全部
不是。。循环一遍就退出了。。还斐波那锲数列。。。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友0b9fc92
2011-09-26 · TA获得超过358个赞
知道小有建树答主
回答量:444
采纳率:100%
帮助的人:228万
展开全部
程序语法有错误,逻辑有错误!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
宫访风
2011-09-26 · TA获得超过156个赞
知道答主
回答量:661
采纳率:0%
帮助的人:258万
展开全部
push是入栈,pop是出栈,front是取栈顶元素
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式