黑马程序员技术交流社区

标题: 自增自减运算! [打印本页]

作者: wenchang1989    时间: 2014-10-29 12:59
标题: 自增自减运算!
自增即a+1,a +=1,a++,++a,其结果是一样的,故自减即a--。

示例代码:
(1)
#include <stdio.h>
{
       int a = 10;
       int b;
       b = (++a) + (a++);
      printf("a=%d,b=%d\n",a , b)


         return 0;
}

(2)

#include <stdio.h>
{
       int a = 10;
       int b;
       b = (a++) + (++a);
      printf("a=%d,b=%d\n",a , b)


         return 0;
}
运行后其结果一样,不太好理解,耐人寻味!



作者: staycolorful    时间: 2014-10-29 13:23
我觉得是不是 第一个b=11+11  第二个 b=10+12  都为22  
两个 a都是12
作者: 大悟云    时间: 2014-10-29 19:30
第一个应该是11+11=22,第二个10+11=21,a=12
作者: 易拉罐    时间: 2014-10-30 20:47
代码一:首先a的初始值为10,执行到这一句b=(++a)+(a++);时,先计算++a,因为是++在a的前面,所以a的值先自增1,所以a=11,表达式(++a)的值为11,然后计算(a++),因为++在a的后面,所以先拿出a的值参于运算,这时(a++)表达式的值就为11,然后a 在加自增1,a=11+1,也就a=12;代码二:a的初始值为10,执行到b=(a++)+(++a)时,先计算(a++),因为++在a后面,所以(a++)表达式的值为10,a然后在自增1,a=10+1,a的值为11;接着在计算(++a),因为++在a的前面,a先自增1,a就=11+1,a=12,所以(++a)表达式的值就为12,最后a的值为12,b的值为10+12=22




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2