| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2133 人关注过本帖
标题:[问题已解决][求助]一道简单的题
只看楼主 加入收藏
mp3aaa
Rank: 5Rank: 5
等 级:贵宾
威 望:17
帖 子:2013
专家分:8
注 册:2006-2-15
收藏
得分:0 
哈哈 我终于明白了 Sally_SJL 你那样的解释 就等价于
main()
{ int i=3,c;
{c=i++;c+=++i;c+=i++;}
printf("%d\n%d\n",c,i);
}


羊肉串 葡萄干 哈密瓜!!
2006-08-02 01:49
JMTT
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2006-7-16
收藏
得分:0 

刚刚调试了一下啊!是12!

2006-08-02 10:13
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
有没有认为是4+4+4的?

倚天照海花无数,流水高山心自知。
2006-08-02 11:50
论坛
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1372
专家分:0
注 册:2006-3-27
收藏
得分:0 
I think is 4+4+4

日出东方,唯我不败! 做任何东西都是耐得住寂寞,任何一个行业要有十年以上的积累才能成为专家
2006-08-02 12:06
cdmalcl
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:24
帖 子:4091
专家分:524
注 册:2005-9-23
收藏
得分:0 
我对这种问题的一贯解决办法就是:

把它分解为
++i;
c=i+i+i;
i++;i++;

就是说在解决运算语句中的++问题时都是先把所有的 ++i 这样的运算都提到所在语句之前独立成语句
把所有i++这样的运算都降到下一语句独立成语句!

例如:
把这个程序改一下之后
main()
{ int i=3,c;
c=(i++)+(++i)+(i++)+(i++)+(++i)+(i++);
printf("%d",c);
getch();
}
它的运行结果是 30
用这种方法解释很通

百试不爽

至于为什么我一直没多想过
有点不负责
但是实在不想多在这个问题滞留
当然这种做法应该批评

呵呵
2006-08-02 13:11
anthony634
Rank: 6Rank: 6
来 自:西南交大
等 级:贵宾
威 望:24
帖 子:653
专家分:10
注 册:2006-6-8
收藏
得分:0 
以下是引用cdmalcl在2006-8-2 13:11:27的发言:
我对这种问题的一贯解决办法就是:

把它分解为
++i;
c=i+i+i;
i++;i++;

就是说在解决运算语句中的++问题时都是先把所有的 ++i 这样的运算都提到所在语句之前独立成语句
把所有i++这样的运算都降到下一语句独立成语句!

例如:
把这个程序改一下之后
main()
{ int i=3,c;
c=(i++)+(++i)+(i++)+(i++)+(++i)+(i++);
printf("%d",c);
getch();
}
它的运行结果是 30
用这种方法解释很通

百试不爽

至于为什么我一直没多想过
有点不负责
但是实在不想多在这个问题滞留
当然这种做法应该批评

呵呵

这是编译器问题吧,你这算法不是什么编译器都行的,VC里面是26。

2006-08-02 13:29
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
同意楼上说的。
这样的问题也只有无聊的试卷上才有,谁编程会写这样的语句

倚天照海花无数,流水高山心自知。
2006-08-02 15:23
xuelian
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2006-8-1
收藏
得分:0 
15楼的 你能给出用这样的方法来做的原因吗 你说是一贯可不可以有一定的参照依据
2006-08-02 15:53
genie2014
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2006-6-21
收藏
得分:0 
3+4+3+2,不知道对不对.i最后取值=6
首先取第一个i取3,第二个i取3+1=4,第三个i取3,然后运算3+4+3,运算完后加上第一个和第三个i增值的1,两次增值故为2,所以结果为3+4+3+2.
我出学+自学,不知道对不对,就算是胡扯吧,有理大家就听,没理大家也让这点我,哈哈,谢谢大家了.

2006-08-02 16:36
ccj
Rank: 1
等 级:新手上路
帖 子:84
专家分:0
注 册:2006-7-27
收藏
得分:0 
void main(){
int i=5,j=5,p,q;
p=(i++)+(i++)+(i++);
q=(++j)+(++j)+(++j);
printf("%d,%d,%d,%d",p,q,i,j);
}
这个程序中,对P=(i++)+(i++)+(i++)应理解为三个i相加,故P值为15。然后i再自增1三次相当于加3故i的最后值为8。而对于q 的值则不然,q=(++j)+(++j)+(++j)应理解为q先自增1,再参与运算,由于q自增1三次后值为8,三个8相加的和为24,j的最后值仍为8。

河马的牙齿有多少颗,我不知晓;流氓兔的家在哪里,我不知晓;花开的声音,小草的呼吸,流星的足迹,我统统
2006-08-02 17:29
快速回复:[问题已解决][求助]一道简单的题
数据加载中...
 
   



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

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