C++中,表达式 i+++j 怎么理解?

是(i++)+j?还是i+(++j)?... 是( i++)+j ? 还是 i+(++j) ? 展开
 我来答
蓝天拉拉
2014-03-23
知道答主
回答量:27
采纳率:0%
帮助的人:4.7万
展开全部
是( i++)+j
C/C++编译器在遇到符号时,总是一直将相邻的下一个操作闷谈猛符纳蚂桥入当前解释的表达式中,除非新加入的操作符会使原本成立的表达式变成非法结果(贪婪性),例如这一例中,在读取i之后会读取第一个加号,此时一个加号是合法的,所以会继续读取下一个加号,之后判断发现两个加号也是合侍者法的,所以继续读取第三个加号,此时发现三个加号的操作符是不合法的,不存在这样的操作符,于是不读取第三个加号,将i与前两个加号结合生成了i++的运算,第三个加号和后面的j则参与普通的加法运算。
匿名用户
2014-03-22
展开全部
i        粗烂    ++          +           j
<标识符> 判凳判  掘改  <运算符>    <运算符>    <标识符>

编译器读取的时候是贪婪的,只要从左到右能读入两个字符就不会只读入一个

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
veslit
2014-03-23
知道答主
回答量:18
采纳率:0%
帮助的人:9.7万
展开全部
上面两位网友的回答都是正确的。该表达式先执行i+j求和,然后对i的值进行++操作。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
流星不死
2014-03-22 · TA获得超过1662个赞
知道小有建树答主
回答量:1621
采纳率:0%
帮助的人:1314万
展开全部
#include<stdio.h>毁友
void main()
{
int i = 10;
int j = 20;
printf("%d"卜颤,i+++j);
printf("\ni=%d j=%d"型余败,i,j);
}

测试后 发现 等同于 ( i++)+j

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
王玉豆豆
2014-03-23
知道答主
回答量:9
采纳率:0%
帮助的人:10万
展开全部
是(i++)+j。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式