当前位置: 代码迷 >> C语言 >> [问题已解决][求助]一道简单的题
  详细解决方案

[问题已解决][求助]一道简单的题

热度:65   发布时间:2006-08-02 17:43:24.0

++i的自加是在整个表达式求解一开始时最先进行的
main()
{ int i=3,c;
c=(i++)+(++i)+(i++);
printf("%d",c);
}

++i 进行后 i=4
再进行i+i+i 结果是12
i 再自加俩次 结果i=6

以上是本人的理解


----------------解决方案--------------------------------------------------------
觉得ccj的有点道理~~~
----------------解决方案--------------------------------------------------------
作为一个好的程序员是不会写这样有模糊结果的代码的,请不要在此停留过多的时间,时间宝贵啊!
----------------解决方案--------------------------------------------------------
这么看来cdmalcl和ccj的理解是一样的,也许就是这样的吧
统一楼上的,这种问题大家不要太纠缠了
谁会写这样的代码
----------------解决方案--------------------------------------------------------


----------------解决方案--------------------------------------------------------
23
----------------解决方案--------------------------------------------------------

我有时候都会搞混掉


----------------解决方案--------------------------------------------------------
以下是引用ccj在2006-8-2 17:29:30的发言:
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。

这个我运行了下p=15 q=22 i=8 j=8
为啥子q会等于22呢


----------------解决方案--------------------------------------------------------

使用++和--时会出现一些人们“想不到”的副作用,初学者慎用


----------------解决方案--------------------------------------------------------
是24把
----------------解决方案--------------------------------------------------------
  相关解决方案