c - C将如何解析这句话?

标签 c puzzle

根据C语言官方的描述,会返回什么数字?

int a, b;
a = 5;
b = a+++++a;
return b;

最佳答案

解析为:

b = (a++)++ + a;

这是一个无效的表达式。增量运算符不能应用两次,因为 (a++) 不是左值。

标记生成器无法识别上下文,并且会匹配尽可能长的标记,因此它不会被解析为语法上有效的 a+++++a。 (不过,这仍然是无效代码,因为它修改了 a 两次,而没有调用未定义行为的序列点。)

关于c - C将如何解析这句话?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7431489/

相关文章:

Oracle 奇怪行为字符串与星期几的比较

python - 欧拉计划 240 : number of ways to roll dice

puzzle - 您如何在面试中回答您认为毫无意义的问题?

c - 具有多个输入的 scanf 和循环 - c

c - 在 C 中,被调用函数可以使调用函数返回吗?

c - libev 循环在空闲时使用 99% 的 CPU

c - 整数声明中的段错误

c - Valgrind:无效读取和使用未初始化值

java - java.util.concurrent.LinkedBlockingQueue 中的奇怪代码