黑马程序员技术交流社区

标题: 1、 下面代码打印结果是__________(需要写上分析思路) [打印本页]

作者: tsc0000    时间: 2015-10-30 14:04
标题: 1、 下面代码打印结果是__________(需要写上分析思路)
本帖最后由 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;
}
作者: wokua    时间: 2015-10-30 16:19
12,7
分析:
++a之后取的 加之前的值所以为5,然后a=5+1=6
a++ 取的是加之后的值所以为7,然后a=6+1=7
之和为5+7=12
作者: 3036803663    时间: 2015-10-31 13:38
12 7
先执行(++a)a = 6;
再执行b= a+a =12
z在执行 (a++) a=7
作者: craneteng    时间: 2015-10-31 13:45
用视频上老师教的方法  看到++就写俩值 一个表达式的值 一个变量的值
b   =    (++a) + (a++);
表达式:   6           6
变量   :   6           7
作者: craneteng    时间: 2015-10-31 13:49
wokua 发表于 2015-10-30 16:19
12,7
分析:
++a之后取的 加之前的值所以为5,然后a=5+1=6

误人子弟啊  是6+6
作者: craneteng    时间: 2015-10-31 14:35
本帖最后由 craneteng 于 2015-10-31 15:03 编辑

b= 俩表达式相加  = 12  楼上结果都对  但思路不对
作者: tsc0000    时间: 2015-10-31 14:41
思路不对?个人理解,a++是再a执行完 + 号去处符之后才进行运算的,请问你还能给出什么样的思路
作者: tsc0000    时间: 2015-10-31 14:42
craneteng 发表于 2015-10-31 14:35
诶我去  我还得给你说多细致  b= 俩表达式相加  = 12  楼上结果都对  但思路不对 ...

思路不对?个人理解,a++是再a执行完 + 号去处符之后才进行运算的,请问你还能给出什么样的思路
作者: craneteng    时间: 2015-10-31 14:55
tsc0000 发表于 2015-10-31 14:42
思路不对?个人理解,a++是再a执行完 + 号去处符之后才进行运算的,请问你还能给出什么样的思路 ...

要严格区分表达式和变量  a++、++a是表达式 , a是变量  ,楼上的解释都给搞混了
作者: tsc0000    时间: 2015-10-31 15:02
craneteng 发表于 2015-10-31 14:55
要严格区分表达式和变量  a++、++a是表达式 , a是变量  ,楼上的解释都给搞混了 ...

这个算是你自己的理解吧,学计算机的学个是很容易理解的
作者: arhui    时间: 2015-10-31 16:15
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;
作者: huihui1030    时间: 2015-10-31 16:41
12.....7.........
作者: liulunjiang    时间: 2015-10-31 16:54
12   7
括号第一 单目第二
加法运算左结合性
作者: 会长大的小牛    时间: 2015-11-5 19:13
结果是b=12,a=7
作者: liuchuan_alex    时间: 2015-11-5 19:47
好多大神啊,学些了


作者:   张恒宇    时间: 2015-11-5 20:35
关于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




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