永发信息网

C 语言问题,自加自减问题`

答案:6  悬赏:80  手机版
解决时间 2021-05-02 07:21

#include "stdio.h"

void main()

{

int x=4,y;

y=(--x)+(x++);

printf{"%d,%d\n",x,y);

}

想了解下这个程序的流程,是从右边开始算?

先算括号的?就是(X++)

在算(--x)? 值就是3,

3+4=7

Y=7

但是从左边算

(--x) 3

3+3=6

y=6

是怎么算的的?

从左到右?

括号里的是先算出来?再一起加?还是算出一个再赋值算??

最佳答案


呵呵,答案肯定是6啊,怎么理解呢?-老师说自加自减得结合性是自右至左啊,没错,为什么?因为无论什么运算,都要通过进栈来运算,栈具有后进先出的特点,最后存放的要最先拿出来。但是无论哪个编译器,TC,VC,后加都是在语句或表达式执行完后(即遇分号后再进行),而对于前加,在TC中,它是先运算后,再进栈,即将前加都运算后,再将表达式依次进栈。在VC中,它是先进栈,出栈后再运算,如此以在tc中分析,y=(--x)+(x++);


进行+运算前它是先对--x进行运算,此时x=3,后进栈运算,得y=3+3=6,最后进行自加即x++,这样得出结果是x=4。


举1个例子自己研究就可以体会到啦:


int b=5;
a=(b)+(++b)+(b)+(++b)+(b);
tc结果是35,vc结果是32,呵呵,最好和老师一起好好探讨,以便得到深入认识!

全部回答

这道题目是考察优先级得问题

至于是先从左算还是先从右算 和编译器有关 一般都是从左开始的

——X 和x++得区别在于 自增自检在左边就先算左边的

于是此时 --x 先算 即x = --x = 3, 此时 x++也是3 。

下面就是问题的关键了 y = (--x) + (x++); --x = 3,x++ = 3,在就是根据优先级 而且X++ 在X后面 于是导致X++自增在y = (--x) + (x++)执行后才执行; 于是 y = 3 + 3 = 6,然后在执行 x++ 得x等于4

从左至右,先算--x x就等于3, 然后再算右边的x++ 结果是 y=3+3 x却在参与运算后变成了4

就拿“++”来说吧:

++在前面的是先+后算

++在后面的是先算后+

自加自减符号在前面的,在运算之前加或减,在后面的是本次运算之后在自加自减,

这个问题最开始我也弄不明白的。不过,慢慢的用心的体会就会明白了。我记得我们老师是这么说的:加(减)在前面,就先加后用;加(减)在后面,就先用后加。

那下面我就拿你的那道题目来说明这句话的意思。

#include "stdio.h"

void main()

{

int x=4,y;

y=(--x)+(x++);

printf{"%d,%d\n",x,y);

}

自加自减的同级结合性是,自右向左的,也就是先从右边算起

y=(--x)+(x++);

要先算表达式(x++)的值,我们知道x=4,那么(x++)=4,x=5 【加(减)在后面,就先用后加】;

接着再算表达式(--x)的值,同样的我们知道x=4, 那么(--x)=3 x=3 【加(减)在前面,就先加(减)后用】;

所以,y=(--x)+(x++)的值是 7

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
谁送我一个赛尔号?我送他300分
QQ自由幻想刷天
求人邀请QQ餐厅(空间的)
为什么人遇到爱情时都回无法自拔···
录像怎么上传?
地下城如果换代理,会删号吗?
dnf魔道火属性扫把上冰粉有什么特殊效果吗?
什么是暗挖土方
友谊士多地址在什么地方,想过去办事
SJ-M新代言的oppo手机的广告哥叫什么
谁能给我解释下用C语言算出来的这两种完全不
求关于鲨鱼的记录片电影
安顺到衡阳多少公里,从衡阳坐汽车到宁波大概
想到Twins、你会想到什么
快男还剩几强?
推荐资讯
北京哪儿有做健身教练培训的学校或者机构的?
怎样才能永远永远不忘记他?
有谁能给一些好听的歌 要有个性的!不要太大众
主演的偶像剧有哪些男演员最帅气?
津南五登房什么时候拆迁啊?
韩文的巫沁洪我爱你是什么样子的?我想发给她
求描写高傲的古诗句,要带诗人名的
怎样才能真正的了解一个人!
为什么我玩梦三国有的人非常厉害啊
申请密码保护的QQ怎么该密码
骡子是怎样繁殖后代的?
九年级数学上
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?