c语言里a+++++b的含义是什么
3个回答
展开全部
(a++)+(++b);
a++=a,a+1;
++a=a+1
a++=a,a+1;
++a=a+1
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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.
====
[原创回答团]
于是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.
====
[原创回答团]
参考资料: 原创 + ISO-9899:1999
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
在VC中编译时不能通过。但我觉得是这样((a++)++)+b的!!!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询