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
还有大家觉得《程序员面试宝典》这本书怎么样?
我本来在看计算机算法,可是觉得有点枯燥,就翻了下这本书,觉得技巧还是蛮不错,就是书中错误好像太多了。
----------------解决方案--------------------------------------------------------
应试的产物~~~~~~~~~
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啊?
----------------解决方案--------------------------------------------------------
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
----------------解决方案--------------------------------------------------------
程序2时是4个表达式相加 3+3+3+2=11 不是12...
----------------解决方案--------------------------------------------------------
----------------解决方案--------------------------------------------------------
++这个东西,很容易弄错,不建议过多的使用.....
常用的是i++此类的。。
(i++)+(++i)+(i++)此类的是犯了大忌,程序要清晰易懂...这样的题目直接跳过...
原因:不同编译器,他算出来的结果不同,连计算机都搞混了,我们就不插手了...
----------------解决方案--------------------------------------------------------