标题:这题的答案怎么理解啊
只看楼主
口香糖869
Rank: 1
来 自:安徽
等 级:新手上路
帖 子:9
专家分:0
注 册:2008-3-28
 问题点数:0 回复次数:11 
这题的答案怎么理解啊
#include<stdio.h>
void main()
{
int a,b;
a=1;
b=(++a)+(++a);
printf("a=%d\n",a);
printf("b=%d\n",b);
}
为什么运行结果为:
                 3
                 6
请高手帮忙解答
搜索更多相关主题的帖子: printf void main include 
2008-03-28 23:17
shmr0077
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2008-3-28
得分:0 
这是C的运算优先顺序造成的。括号里面的先进行运算最后进行加法运算。
2008-03-28 23:20
广陵绝唱
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:29
帖 子:3607
专家分:1709
注 册:2008-2-15
得分:0 
自加的运算级别比+高,所以先作自加;
a先自加二次,值为3;
然后再作两个a相加,b值为6;

a=1;
b=(++a)+(++a);  
等价为:   
a=1;
a=++a=2;
a=++a=3;
b=3+3=6;
基本就是这样的,希望你能理解。
2008-03-28 23:23
口香糖869
Rank: 1
来 自:安徽
等 级:新手上路
帖 子:9
专家分:0
注 册:2008-3-28
得分:0 
回复 3# 的帖子
谢谢你的解释,我有点懂了
2008-03-28 23:27
口香糖869
Rank: 1
来 自:安徽
等 级:新手上路
帖 子:9
专家分:0
注 册:2008-3-28
得分:0 
那大家在看看这题怎么理解
#include<stdio.h>
void main()
{int p,q;
int x=8,y=8;
p=(x++)+(x++)+(x++);
q=(++y)+(++y)+(++y);
printf("%d,%d,%d,%d\n",p,q,x,y);
}
运行结果为:
24,31,11,11
2008-03-29 09:02
duxinjun123
Rank: 1
等 级:新手上路
帖 子:52
专家分:0
注 册:2007-7-6
得分:0 
++x 是先自加后参加运算,x++是先运算后自加
2008-03-29 10:55
广陵绝唱
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:29
帖 子:3607
专家分:1709
注 册:2008-2-15
得分:0 
回复 5# 的帖子
很欣赏你的学习态度,很认真,呵呵。

    不过题是这么出的,主要是为了让我们初学的时候掌握a++与++a的区别,实际编程的时候,一般不会这么写的。

    这些道理弄清楚了,就可以了,编程的时候,把这些许多的++、--的省略了吧,一般用一个两个就可以了。
2008-03-29 12:33
口香糖869
Rank: 1
来 自:安徽
等 级:新手上路
帖 子:9
专家分:0
注 册:2008-3-28
得分:0 
谢谢
我觉得也只能这么理解了,我问了许多老师,他们也没有办法解释。
呵呵
2008-03-29 15:16
now
Rank: 1
来 自:广州
等 级:新手上路
帖 子:544
专家分:0
注 册:2007-11-9
得分:0 
书中有很多题目都是在让人去钻牛角尖,有时难得糊涂一回也是好事

GIS
Geographic Information System
你在哪里?——》你的坐标?
2008-03-29 15:41
广陵绝唱
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:29
帖 子:3607
专家分:1709
注 册:2008-2-15
得分:0 
回复 8# 的帖子
哪个老师?是在敷衍你,还是他真的不会?做学问做到这种程度,还谈什么传道、授业、解惑?


p=(x++)+(x++)+(x++);
q=(++y)+(++y)+(++y);
这题很简单,如果是TC类的编译器,结果应为:24、33、11、11。

    x++是用过x后再加, ++y是在用y之前就自加。就好比说:x++是在今天卖过货后,货再涨价,++y是在今天早上没卖货时,就涨价了。而由于运算级别的问题,两个式子都是变量的自增运算级别高。

     p=8+8+8=24,之后x值为11;
     q=11+11+11=33,之后y值为11。

    你再好好想一想,然后去把道理告诉那个老师。
2008-03-29 17:07



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-205934-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.097284 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved