标签: c puzzle
根据C语言的官方说明,将返回什么号码?
int a, b; a = 5; b = a+++++a; return b;
答案 0 :(得分:5)
它被解析为:
b = (a++)++ + a;
这是一个无效的表达式。增量运算符不能应用两次,因为(a++)不是左值。
(a++)
标记生成器不支持上下文,并且可能匹配最长的标记,因此它不会被解析为语法上有效的a++ + ++a。 (但这仍然是无效的代码,因为它修改了a两次而没有一个调用未定义行为的序列点。)
a++ + ++a
a