递减运算符与减法运算符

Dhr*_*tra 0 subtraction decrement

如果我写一个像(在c中)的代码

    x=1;
    z=2;
    y=x---z;
Run Code Online (Sandbox Code Playgroud)

将前两个 - 作为后减量处理,后来作为减法处理

或者第一个 - 将被视为减法,其他两个将被视为预先减少

如果我放一个空格使其成为另一个(因为在c程序中不会被空格改变)该怎么办?

Sou*_*osh 6

根据C11标准,章节§6.4,词汇元素, (强调我的)

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

所以,

y=x---z;
Run Code Online (Sandbox Code Playgroud)

y= (x--) - z;
Run Code Online (Sandbox Code Playgroud)

这也称为最大蒙克规则.