【发布时间】:2014-04-04 12:04:33
【问题描述】:
递减/递增是一项基本操作,但它在- -- 和+ ++ 上的优先级让我感到困惑。我将使用递减来说明:
我这里有一套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
【问题讨论】:
-
“语句后的详细信息”列中的所有位都是错误的。所有这些都减少了一个变量。
-
尝试将操作放在自己的语句中,这样前缀/后缀就不会混淆结果。例如。
auto const x = a---b; std::cout << x << ", " << a << ", " << b << "\n"; -
另见“走向”运算符
-->。 -
@hvd 我的意思是我从 echo 得到的结果
-
链接示例重复打印出
a的值,同时将其标记为“b”。如果你修复它,让它实际打印出b的值,你会发现程序的行为没有什么特别令人惊讶或令人困惑的,而且解析-和+之间没有区别。
标签: c++ increment operator-precedence decrement