为什么" - - "和"+ ++"以不同的方式运作?

Dad*_*dan 1 c++ increment operator-precedence decrement

减少/增量是一项基本操作,但它优先于我- --并使+ ++我感到困惑.我将使用减量来说明:

我在这里有一套不同风格的操作ab:在这里工作

#include <iostream>
using namespace std;
int a=10, b=7;
int main() {
// - and -- opearator                         // Results:  Details:
    a = 10, b = 7; cout << a---b << endl;     //    3      a post-decrement        
    a = 10, b = 7; cout << a ---b << endl;    //    3      a post-decrement     
    a = 10, b = 7; cout << a- --b << endl;    //    4      b pre-decrement    
    a = 10, b = 7; cout << a-- -b << endl;    //    3      a post-decrement  
    a = 10, b = 7; cout << a--- b << endl;    //    3      a post-decrement 
    return 0;
    }
Run Code Online (Sandbox Code Playgroud)

据我所知,4输出的减少来b这是7该转向6,并减去a这是10.

另外,由于其他四个陈述,我认为编译器将所有这些都视为---但是,结果是混乱- --.看到它在这里工作

Luc*_*ore 10

解析遵循最大的munch规则,因此所有语句减去第三个都被解释为(a--)-b递减a并返回其先前的值(即10).

第三个是a-(--b)预先递减b,因此返回新的递减值.