请教如下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; 展开
{
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; 展开
4个回答
展开全部
首先,从形式上看,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++中编译时不提醒出错,但执行后就会出现很
奇怪的结果。可要注意哟……
个函数有错误,不能通过编译。原因是:
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++中编译时不提醒出错,但执行后就会出现很
奇怪的结果。可要注意哟……
展开全部
不是。。循环一遍就退出了。。还斐波那锲数列。。。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
程序语法有错误,逻辑有错误!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
push是入栈,pop是出栈,front是取栈顶元素
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |