当前位置: 代码迷 >> C语言 >> 讨论一下++的使用
  详细解决方案

讨论一下++的使用

热度:685   发布时间:2007-09-24 00:25:33.0
讨论一下++的使用
#define product(x) (x*x)

int main()
{
int i=3;
int j,k;
j=product(i++);
k=product(++i);
printf("j=%d,k=%d",j,k);
retun 0;
}

我觉得结果应该是:9,42
可是书上却是:9,49


还有大家觉得《程序员面试宝典》这本书怎么样?
我本来在看计算机算法,可是觉得有点枯燥,就翻了下这本书,觉得技巧还是蛮不错,就是书中错误好像太多了。
搜索更多相关的解决方案: 计算机  int  product  技巧  

----------------解决方案--------------------------------------------------------

应试的产物~~~~~~~~~
product不是函数,请你替换一下看看变成什么
还有,请你自己运行一下,不要说你自己“觉得”,还有“书上是”



by 雨中飞燕 QQ:78803110 QQ讨论群:5305909

[url=http://bbs.bc-cn.net/viewthread.php?tid=163571]请大家不要用TC来学习C语言,点击此处查看原因[/url]
[url=http://bbs.bc-cn.net/viewthread.php?tid=162918]C++编写的Windows界面游戏[/url]
[url=http://yzfy.org/]C/C++算法习题(OnlineJudge):[/url] http://yzfy.org/


----------------解决方案--------------------------------------------------------
也对,我这人有点懒,竟然忘了运行,实在不好意思。

----------------解决方案--------------------------------------------------------
怪拉,还真是9,49
看来要好好想想啦
----------------解决方案--------------------------------------------------------

程序1:
a=2;
b=(++a)+(a++)+( a--)+(--a);
printf("d",b);
程序2:
a=2;
printf("d",(++a)+(a++)+( a--)+(--a));
两程序的运行结果分别为8,12。
请问为何??


----------------解决方案--------------------------------------------------------

j=product(i++);
k=product(++i);

我试了一下,在这两句间加一句 printf("i=%d\n",i); 结果i=5为什么啊,怎么不是4啊?


----------------解决方案--------------------------------------------------------
回复:(bitcai)j=product(i++);k=product(++i);我试...

i++ 是先赋值 再自增
所以j=product(i++);相当于j=(i++)*(i++) 的结果为3*3=9 i自增了两次所以i=5
++i 是先自增 再赋值
所以k=product(i++);相当于j=(i++)*(i++) 第一个括号i=6 第二个括号时i=7 所以此时的i=7
结果就是7*7=49


----------------解决方案--------------------------------------------------------
回复:(shiyunxu)程序1:a=2;b=(++a)+(a++)+( a--)+...
程序1的结果和我上面说的一样的原因 a 经过一系列的运算后值仍为2 所以 b=4*2=8
程序2时是4个表达式相加 3+3+3+2=11 不是12...

----------------解决方案--------------------------------------------------------
回复:(xiaopi_zj)回复:(bitcai)j=product(i++);...
谢谢你拉!以为(i++)*(i++)第二次自增不算,原来也算的,呵呵,谢谢,受教了
----------------解决方案--------------------------------------------------------

++这个东西,很容易弄错,不建议过多的使用.....

常用的是i++此类的。。

(i++)+(++i)+(i++)此类的是犯了大忌,程序要清晰易懂...这样的题目直接跳过...


原因:不同编译器,他算出来的结果不同,连计算机都搞混了,我们就不插手了...


----------------解决方案--------------------------------------------------------