c++ - 为什么 "- --"和 "+++"和 操作不同?

标签 c++ increment operator-precedence decrement

递减/递增是一个基本操作,但它在 - --+++ 上的优先级让我感到困惑。我将使用递减来说明:

我这里有一套ab之间不同风格的操作: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/

相关文章:

javascript - 为什么在这段 JavaScript 代码中函数调用发生在变量 x 递增之后

c++ - static_assert(std::is_abstract) 在 Visual Studio 2013 中导致编译器错误

c++ - getline() 在第一次没有正确的用户输入的情况下被绕过

c++ - 在派生构造函数中调用基方法的坏习惯?

python - 我调用函数的次数越多,函数中变量的值就不断增加

c - putchar() 奇怪的输出,为什么会这样?

c++ - 模板类型定义 - 你的工作是什么?

mysql - Rails 3 - increment_counter 递增两次

c - 以下代码将输出什么以及为什么?谁能解释一下吗?

c - 为什么这些构造使用增量前和增量后未定义的行为?