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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 tsc0000 于 2015-11-1 09:12 编辑

看看你们都是怎么分析的呀
1、 下面代码打印结果是__________(需要写上分析思路)
#include <stdio.h>
int main(int argc, const char * argv[])
{
    int b;
    int a = 5;
    b = (++a) + (a++);
   
    printf("b=%d, a=%d\n", b, a);
    return 0;
}

16 个回复

倒序浏览
12,7
分析:
++a之后取的 加之前的值所以为5,然后a=5+1=6
a++ 取的是加之后的值所以为7,然后a=6+1=7
之和为5+7=12
回复 使用道具 举报 0 1
12 7
先执行(++a)a = 6;
再执行b= a+a =12
z在执行 (a++) a=7
回复 使用道具 举报
用视频上老师教的方法  看到++就写俩值 一个表达式的值 一个变量的值
b   =    (++a) + (a++);
表达式:   6           6
变量   :   6           7

点评

这就是你的不对了,自己运行看结果吧  发表于 2015-10-31 14:19
回复 使用道具 举报
wokua 发表于 2015-10-30 16:19
12,7
分析:
++a之后取的 加之前的值所以为5,然后a=5+1=6

误人子弟啊  是6+6
回复 使用道具 举报
本帖最后由 craneteng 于 2015-10-31 15:03 编辑

b= 俩表达式相加  = 12  楼上结果都对  但思路不对
回复 使用道具 举报
tsc0000 中级黑马 2015-10-31 14:41:46
7#
思路不对?个人理解,a++是再a执行完 + 号去处符之后才进行运算的,请问你还能给出什么样的思路
回复 使用道具 举报
tsc0000 中级黑马 2015-10-31 14:42:47
8#
craneteng 发表于 2015-10-31 14:35
诶我去  我还得给你说多细致  b= 俩表达式相加  = 12  楼上结果都对  但思路不对 ...

思路不对?个人理解,a++是再a执行完 + 号去处符之后才进行运算的,请问你还能给出什么样的思路
回复 使用道具 举报
tsc0000 发表于 2015-10-31 14:42
思路不对?个人理解,a++是再a执行完 + 号去处符之后才进行运算的,请问你还能给出什么样的思路 ...

要严格区分表达式和变量  a++、++a是表达式 , a是变量  ,楼上的解释都给搞混了
回复 使用道具 举报
craneteng 发表于 2015-10-31 14:55
要严格区分表达式和变量  a++、++a是表达式 , a是变量  ,楼上的解释都给搞混了 ...

这个算是你自己的理解吧,学计算机的学个是很容易理解的
回复 使用道具 举报
arhui 中级黑马 2015-10-31 16:15:27
11#
b = (++a) + (a++);从左到右
(++a) 加号在变量前  类似 a=a+1 相加后a变为6了
(a++)加号在变量后   先使用a=6;然后a=a+1=7;
所以 b = (++a) + (a++); b=6+6=12;最后a=6+1=7;
回复 使用道具 举报
12.....7.........
回复 使用道具 举报
12   7
括号第一 单目第二
加法运算左结合性
回复 使用道具 举报
结果是b=12,a=7
回复 使用道具 举报
好多大神啊,学些了

回复 使用道具 举报
关于a++ and ++a的问题不需要深究了。。。。简单地记住一个机制++在前就先加1在计算此,a++是先调用a的值再加1.这里是:

b=6  //这里是先加1 +   6//因为前面的a自增过了得到6这里是先调用此时a的值是6所以调用6.执行完计算b=12
b=(++a)+(a++)
上面的a值变化的步骤是:先自增得到(++a)6....再调用(a++)此时也是6.......调用完了自增一次得到结果7
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马