c语言里a+++++b的含义是什么

 我来答
函美媛庄丁
2019-06-25 · TA获得超过3.7万个赞
知道小有建树答主
回答量:1.2万
采纳率:30%
帮助的人:947万
展开全部
C在这里遵循词法解析的贪婪匹配原则:优先匹配尽可能多字符的符号,无论是否有语法错误(因为词法分析时还没有语法检查)。
于是a+++++b会被当作a
++
++
+
b而不是a
++
+
++
b(可能是合法的)考虑。这是非法的表达式,因此产生编译错误。
这个问题在ISO
C99标准中直接以示例描述,原文如下:
6.4
6
EXAMPLE
2
The
program
fragment
x+++++y
is
parsed
as
x
++
++
+
y,
which
violates
a
constraint
on
increment
operators,
even
though
the
parse
x
++
+
++
y
might
yield
a
correct
expression.
====
[原创回答团]
哈良喜静
2019-05-21 · TA获得超过3.6万个赞
知道小有建树答主
回答量:1.2万
采纳率:25%
帮助的人:949万
展开全部
c语言编译器对于代码的分解采用的是贪心算法
按照贪心算法分解a+++++b为:
((a++)++)+b
因为a++的结果为左值,而左值不能再进行运算,故a+++++b编译不能通过
除非写成a+++
++b,在++b前面有个空格,这时候根据贪心算法分解为:
(a++)+(++b)
编译通过
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式