C中表达式的解析规则是什么?

Moe*_*oeb 4 c parsing expression

我怎样才能理解表达式的解析

a = b+++++b---c--;
Run Code Online (Sandbox Code Playgroud)

在C?

我刚刚编写了上面的表达式,是的,我可以使用任何编译器检查结果,但我想知道的是我应该知道理解在C中解析这些表达式的基本规则.

Din*_*ngo 5

从标准6.2(4):

如果输入流已被解析为预处理令牌直到给定字符,则下一个预处理令牌是可构成预处理令牌的最长字符序列.

他们甚至添加了这个例子:

示例2程序片段x +++++ y被解析为x ++ ++ + y,它违反了增量运算符的约束,即使解析x ++ + ++ y可能产生正确的表达式.

所以你的声明:

a = b+++++b---c--; 
Run Code Online (Sandbox Code Playgroud)

相当于:

a = b ++ ++ + b -- - c -- ;
Run Code Online (Sandbox Code Playgroud)

  • 那就是它.根据提问者通过"解析"的含义,您还需要使用运算符优先级规则来构造表达式树. (3认同)
  • 鉴于缺少空格,我认为他意味着解析为令牌.无论如何,他的例子没有有效的表达式树. (2认同)