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.
====
[原创回答团]
温馨提示:内容为网友见解,仅供参考