C中的表达评估

Pri*_*pal 2 c associative operators

#include <stdio>
int main(){      

       int x = 4;  
       int y = 3;  
       int z;

       z = x---y;
       printf("%d" , z);
       return 0;
}
Run Code Online (Sandbox Code Playgroud)

Linux Mandriva中的gcc编译器将其评估为(x--)-y.我很困惑为什么会这样.它可能是x - (--y).

我知道有些答案会告诉我查看优先级表.我已经完成了所有这些,但仍然存在疑问.

请任何人澄清一下.

Gre*_*ill 9

C词法标记符是贪婪的,所以你的表达式被标记为

x -- - y
Run Code Online (Sandbox Code Playgroud)

在应用优先规则之前.