C++问题,菜鸟级别的问题。

#include <iostream.h>
int SQ(int);
void main ()
{
int i=1;
while(i<=5)
cout<<SQ(i++)<<"\t";
cout<<endl;
}
int SQ(int y)
{
return((y)*(y));
}

………………………………………………………………………………
编译结果
………………………………………………………………………………
1 4 9 16 25
…………………………………………………………………………
为什么会出现1呢?我以为是出现 4、9、16、25
实在是不懂为什么出现1,希望个位大师傅能给我解答下。我就是只菜鸟。

对i++的理解问题!
i++的意思是i先参加运算,然后再自加!
因此第一次运算时,i=1
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-10-06
i++是i先给值然后加1
也就是说i=1先给SQ函数 然后再加1
++i则是先加后赋值
第2个回答  2011-10-06
你自加符号用的有问题,不应该用i++,而应该用++i,因为,i++是先传递本身的值而后再将i本身加1的,也就是说对于你的程序里SQ(i++)这个函数是将1负值给了Y,然后i的值才加1变成了2,而++i则是先将整体的值加1后,再将i加1的。不知道你懂了没,可以看看C++的书,里面讲得挺细的。
第3个回答  2011-10-06
呵呵,这个确实是个跟容易错的,而且程序也不够简洁!主要问题出现在输出语句中,cout<<SQ(i++);这里先执行SQ(i),再进行i++的;而SQ(++i)则是先执行i+1,再执行SQ(i)的,后者的结果中就没有1。

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网