| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 740 人关注过本帖
标题:[求助]郁闷了,想不通,给我讲一下下面这个的执行步骤
只看楼主 加入收藏
走火
Rank: 1
等 级:新手上路
帖 子:426
专家分:0
注 册:2005-12-28
收藏
 问题点数:0 回复次数:10 
[求助]郁闷了,想不通,给我讲一下下面这个的执行步骤
#include "stdio.h"
void main ( )
{
int i=5,j=5,p,q;
p=(i++)+(i++)+(i++);
q=(++j)+(++j)+(++j);
printf("p=%d q=%d i=%d j=%d",p,q,i,j);
}

请兄弟们给我讲一下P,Q的详细执行步骤
我自己推算的结果是P=18,Q=21,i=8,j=8
而运行后是P=15,Q=24,i=8,j=8

我想了半天郁闷了,帮我讲讲哈
万分感谢
搜索更多相关主题的帖子: include 
2006-08-27 08:39
zhangjuan
Rank: 1
等 级:新手上路
帖 子:992
专家分:0
注 册:2006-1-19
收藏
得分:0 
这是i++和++i的区别,
p=(i++)+(i++)+(i++);i的初值为5,因为i++是先执行再进行自加运算,所以结果是
p=5+5+5;此时i自加的值为8
q=(++j)+(++j)+(++j);
++j是进行自加,再运算,所以结果为q=8+8+8;

2006-08-27 08:44
走火
Rank: 1
等 级:新手上路
帖 子:426
专家分:0
注 册:2005-12-28
收藏
得分:0 
#include "stdio.h"
void main ( )
{
int i=5,j=5,p,q;
p=(i++)+(i++)+(i++);
q=(++j)+(++j)+(++j);
printf("p=%d q=%d i=%d j=%d",p,q,i,j);
}

还是不太明白呀,我太懂了
p=(i++)+(i++)+(i++);
我是这样理解的
i++ i++ i++
5 + 6 + 7 这就是他们的结果,是18
i值 6 7 8
我的意思是说执行I++时当前值是I,而后面执行I++时I是已经+1的I了

看你上面的解释好像是先取出I的当前值进行+运算负值给P后才+3次1


我是一只小菜鸟,请大家多多照顾! QQ 87135637
2006-08-27 11:16
走火
Rank: 1
等 级:新手上路
帖 子:426
专家分:0
注 册:2005-12-28
收藏
得分:0 
谁给我讲明白点呀
讲讲
p=(i++)+(i++)+(i++);
q=(++j)+(++j)+(++j);
具体执行步骤
越详细越好


我是一只小菜鸟,请大家多多照顾! QQ 87135637
2006-08-27 11:17
心动音符
Rank: 1
等 级:禁止访问
威 望:1
帖 子:832
专家分:0
注 册:2005-9-15
收藏
得分:0 
以下是引用走火在2006-8-27 11:17:32的发言:
谁给我讲明白点呀
讲讲
p=(i++)+(i++)+(i++);
q=(++j)+(++j)+(++j);
具体执行步骤
越详细越好

啊 哦 我看看

同意2楼的
但是我怎么是15 22 8 8啊

[此贴子已经被作者于2006-8-27 11:53:28编辑过]


2006-08-27 11:27
心动音符
Rank: 1
等 级:禁止访问
威 望:1
帖 子:832
专家分:0
注 册:2005-9-15
收藏
得分:0 
#include <iostream.h>
using namespace std;
int main ()
{
int i=5,j=5,p=0,q=0,k=0;
while(k<3)
{p+=i++;
q+=++j;
k++;}
cout<<" p="<<p<<" q="<<q<<" i="<<i<<" j="<<j;
return 0;
}
跟这个比较一下 哈哈

2006-08-27 11:50
心动音符
Rank: 1
等 级:禁止访问
威 望:1
帖 子:832
专家分:0
注 册:2005-9-15
收藏
得分:0 
p=(i++)+(i++)+(i++);叫一个运算
p+=(i++)叫一个运算

i++是先运算后++所以等于5+5+5=15

2006-08-27 11:52
走火
Rank: 1
等 级:新手上路
帖 子:426
专家分:0
注 册:2005-12-28
收藏
得分:0 
q=(++j)+(++j)+(++j);
那这句为什么等于24
++J 是先+1再运算
那应该是6+7+8=21呀
怎么是24?

我是一只小菜鸟,请大家多多照顾! QQ 87135637
2006-08-27 12:17
zhangjuan
Rank: 1
等 级:新手上路
帖 子:992
专家分:0
注 册:2006-1-19
收藏
得分:0 
以下是引用走火在2006-8-27 12:17:44的发言:
q=(++j)+(++j)+(++j);
那这句为什么等于24
++J 是先+1再运算
那应该是6+7+8=21呀
怎么是24?

因为是先进行自加运算,然后再取值,第一次自加j=6,二次j=7,三次j=8,然后再取出q=j+j+j,
故为q=8+8+8;


2006-08-27 14:12
走火
Rank: 1
等 级:新手上路
帖 子:426
专家分:0
注 册:2005-12-28
收藏
得分:0 
谢谢楼上,

我是一只小菜鸟,请大家多多照顾! QQ 87135637
2006-08-27 20:57
快速回复:[求助]郁闷了,想不通,给我讲一下下面这个的执行步骤
数据加载中...
 
   



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

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