自增问题(很容易犯的错!)

作者在 2008-01-25 16:40:52 发布以下内容

     学C的都知道 ++i 、i++的区别,但是上次我却遇到一个例子,经过反复实验,结果

是得出了,但是就是不知道怎么解释!

     还是先看例题:

#include <stdio.h>
main()
{
int i=5,j=5;
i=(i++)+(i++)+(i++);   
j=(++j)+(++j)+(++j);  
printf("i=%d\nj=%d\n",i,j);
}

  先前看到这个题以为i结果是18,j的结果是21(8、7、6),但是结果却是22,经

过反复推敲终于得到一个结论,不管j=(++j)+(++j)+(++j) 还是j=(++j)+(++j)+(++j)+

(++j)+(++j)……+(++j),最左边的两个他们的值总是相等的。而且如果原题变成

#include <stdio.h>
main()
{
int i=5,j=5,m,n;
m=(i++)+(i++)+(i++);   //  i 5,5,5
n=(++j)+(++j)+(++j);    //  j 8,8,6
printf("i=%d\nj=%d\n",m,n);
}
  那么他们结果又变了,m=15,n=22(不变);

   不知道大家有没有见过,我觉得是一个值得研究的问题,很希望看到你们是怎样解释这个的!!!

C | 阅读 1745 次
文章评论,共0条
游客请输入验证码
浏览50194次
最新评论