递减/递增是一个基本操作,但它在 - --
和 +++
上的优先级让我感到困惑。我将使用递减来说明:
我这里有一套a
和b
之间不同风格的操作:See it working here
#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;
}
我知道 4
输出来自递减的 b
,即 7
变成了 6
并且从 a
中减去 10
。
此外,由于其他四个语句,我认为编译器将它们全部视为 ---
但是看,这里出现了 - --
结果的困惑. See it working here
最佳答案
解析遵循最大咀嚼规则,因此所有语句减去第三个都被解释为(a--)-b
递减a
并返回其先前的值(10
)。
第三个是a-(--b)
,它是对b
的预减,所以返回新的减后值。
关于c++ - 为什么 "- --"和 "+++"和 操作不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22146797/