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

如题所述

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.
====
[原创回答团]
温馨提示:内容为网友见解,仅供参考
第1个回答  2019-05-21
c语言编译器对于代码的分解采用的是贪心算法
按照贪心算法分解a+++++b为:
((a++)++)+b
因为a++的结果为左值,而左值不能再进行运算,故a+++++b编译不能通过
除非写成a+++
++b,在++b前面有个空格,这时候根据贪心算法分解为:
(a++)+(++b)
编译通过
相似回答