求大神帮忙解答C语言疑惑

[复制链接]
查看11 | 回复5 | 2013-5-7 19:21:49 | 显示全部楼层 |阅读模式
这个表达式,先去两个操作数,++y,和++y,y是不是要先增一啊,编译器是这样处理的,两个操作数,分别增一后在参与运算,这就像x=(++a )+ (++b)是一样的,是不是先把a和b增一啊, 两次++y是对同一个变量增一,y现在是4,前两个操作数相加是4+4=8,8再和第三个操作数相加,也就是8+5=13 并不是想象中的 3+4+5 编译器的处理过程类似于y=y+1;y=y+1;p=y+y;y=y+1;p=p+y;...
回复

使用道具 举报

千问 | 2013-5-7 19:21:49 | 显示全部楼层
p=(++y)+(++y)+(++y)计算步骤:(++y)+(++y)+(++y)第一步:第一个(++y)相当y=y+1;结果y=3;第二步:第二个(++y)相当y=y+1;结果y=4;第三步:第三个(++y)相当y=y+1;结果y=5;所以p=(++y)+(++y)+(++y)=3+4+5=12...
回复

使用道具 举报

千问 | 2013-5-7 19:21:49 | 显示全部楼层
p=3+4+5错了,不好意思,就是按照运算符的优先级,先运算++在运算+,++y表示y自加一,再返回y的值,最后可能会变为p=15=5+5+5...
回复

使用道具 举报

千问 | 2013-5-7 19:21:49 | 显示全部楼层
执行顺序是y+1y+1y+1p= 3y 顺便说一句在java上执行的结果就是12...
回复

使用道具 举报

千问 | 2013-5-7 19:21:49 | 显示全部楼层
相当于:p = y+y+y;你说呢...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行