当前位置: 代码迷 >> C语言 >> [求助]郁闷了,想不通,给我讲一下下面这个的执行步骤
  详细解决方案

[求助]郁闷了,想不通,给我讲一下下面这个的执行步骤

热度:291   发布时间:2006-08-27 08:39:24.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,Q的详细执行步骤
我自己推算的结果是P=18,Q=21,i=8,j=8
而运行后是P=15,Q=24,i=8,j=8

我想了半天郁闷了,帮我讲讲哈
万分感谢
搜索更多相关的解决方案: include  

----------------解决方案--------------------------------------------------------
这是i++和++i的区别,
p=(i++)+(i++)+(i++);i的初值为5,因为i++是先执行再进行自加运算,所以结果是
p=5+5+5;此时i自加的值为8
q=(++j)+(++j)+(++j);
++j是进行自加,再运算,所以结果为q=8+8+8;
----------------解决方案--------------------------------------------------------
#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


----------------解决方案--------------------------------------------------------
谁给我讲明白点呀
讲讲
p=(i++)+(i++)+(i++);
q=(++j)+(++j)+(++j);
具体执行步骤
越详细越好


----------------解决方案--------------------------------------------------------
以下是引用走火在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编辑过]


----------------解决方案--------------------------------------------------------
#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;
}
跟这个比较一下 哈哈
----------------解决方案--------------------------------------------------------
p=(i++)+(i++)+(i++);叫一个运算
p+=(i++)叫一个运算

i++是先运算后++所以等于5+5+5=15
----------------解决方案--------------------------------------------------------
q=(++j)+(++j)+(++j);
那这句为什么等于24
++J 是先+1再运算
那应该是6+7+8=21呀
怎么是24?
----------------解决方案--------------------------------------------------------
以下是引用走火在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;


----------------解决方案--------------------------------------------------------
谢谢楼上,
----------------解决方案--------------------------------------------------------
  相关解决方案