C语言中左结合性与右结合性,在运算中怎么体现?

比如这么一个程序:#include<stdio.h>voidmain(){intx=1,i=5,s;s=i+++x++;printf("x=%di=%ds=%d\n",x... 比如这么一个程序:
#include<stdio.h>
void main()
{
int x=1,i=5,s;
s=i+++x++;
printf("x=%d i=%d s=%d\n",x,i,s);
}
能给我分析一下它的具体运算吗?
展开
 我来答
吉祥二进制
高粉答主

2013-12-01 · 科技改变生活,生活改变科技。
吉祥二进制
采纳数:33926 获赞数:84579

向TA提问 私信TA
展开全部
s=i+++x++;

编译器在读取源码的时候,是先一个一个的读字符,然后根据字符组成一个词,这个过程就是词法分析阶断,如 s = i+++x++;这样的代码,它会首先读取第一个+号,大多数编译器都是”贪心法“取字符,也就是不停的向后取字符,以便组成一个有意义的词。 所以它会继续第二个+,组成++运算符,所以实际的代码就是

s = i++ + x++;

我们知道,后++就是让原来值进行运算,执行完后再加1,所以s的值,实际上就是 s = i + x
百度网友a5eb3e1
2013-12-01 · TA获得超过4448个赞
知道大有可为答主
回答量:3486
采纳率:60%
帮助的人:2649万
展开全部
#include<stdio.h>
int main()
{
int x=1,i=5,s;
s=i+++x++;
/*
等价于 s = (i++) + (x++);
也就是
s = i + x; // i 和 x 值先用
i++;       // 然后 i 自增
x++;       // 然后 x 自增
*/
printf("x=%d   i=%d   s=%d\n",x,i,s);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式