| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1086 人关注过本帖
标题:讨论一下++的使用
只看楼主 加入收藏
a402730324
Rank: 5Rank: 5
等 级:贵宾
威 望:18
帖 子:1233
专家分:0
注 册:2005-12-1
收藏
 问题点数:0 回复次数:15 
讨论一下++的使用
#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 技巧 
2007-09-24 00:25
雨中飞燕
Rank: 3Rank: 3
等 级:禁止访问
威 望:8
帖 子:2200
专家分:0
注 册:2007-8-9
收藏
得分:0 

应试的产物~~~~~~~~~
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/

2007-09-24 00:31
a402730324
Rank: 5Rank: 5
等 级:贵宾
威 望:18
帖 子:1233
专家分:0
注 册:2005-12-1
收藏
得分:0 
也对,我这人有点懒,竟然忘了运行,实在不好意思。

敢犯强汉者,虽远必诛!——陈汤 不知吾辈何时方能吐出此豪言壮语?
2007-09-24 00:38
a402730324
Rank: 5Rank: 5
等 级:贵宾
威 望:18
帖 子:1233
专家分:0
注 册:2005-12-1
收藏
得分:0 
怪拉,还真是9,49
看来要好好想想啦

敢犯强汉者,虽远必诛!——陈汤 不知吾辈何时方能吐出此豪言壮语?
2007-09-24 00:39
shiyunxu
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2007-9-24
收藏
得分:0 

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

2007-09-24 10:00
bitcai
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2007-9-23
收藏
得分:0 

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

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


2007-09-24 13:38
xiaopi_zj
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2007-9-1
收藏
得分:0 
回复:(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

2007-09-24 14:54
xiaopi_zj
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2007-9-1
收藏
得分:0 
回复:(shiyunxu)程序1:a=2;b=(++a)+(a++)+( a--)+...
程序1的结果和我上面说的一样的原因 a 经过一系列的运算后值仍为2 所以 b=4*2=8
程序2时是4个表达式相加 3+3+3+2=11 不是12...
2007-09-24 15:14
bitcai
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2007-9-23
收藏
得分:0 
回复:(xiaopi_zj)回复:(bitcai)j=product(i++);...
谢谢你拉!以为(i++)*(i++)第二次自增不算,原来也算的,呵呵,谢谢,受教了

2007-09-24 18:59
电脑爱好者
Rank: 1
等 级:新手上路
帖 子:43
专家分:0
注 册:2006-5-6
收藏
得分:0 

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

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

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


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

2007-09-24 20:29
快速回复:讨论一下++的使用
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015111 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved