A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© wenchang1989 中级黑马   /  2014-10-29 12:59  /  845 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

自增即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;
}
运行后其结果一样,不太好理解,耐人寻味!


3 个回复

倒序浏览
我觉得是不是 第一个b=11+11  第二个 b=10+12  都为22  
两个 a都是12
回复 使用道具 举报 1 0
第一个应该是11+11=22,第二个10+11=21,a=12
回复 使用道具 举报
代码一:首先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
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马