C++和++运营商

C++和++运营商

问题描述:

所以我期待在下面的代码片断C++和++运营商

int a = 3; 
int b = 2; 
b = a++; 
cout << ++b; 

我的理解逐行是:

  1. 发起= 3
  2. 发起B = 2;
  3. 将(a + 1)的值赋值给b,所以b = 4;
  4. 打印B + 1,这是5

然而这是错误的,有人可以用简单的术语解释一下吗?我是新的C++

+6

你正在混淆预增量和后增量。 'a ++'和'++ a'不一样。相关:http://*.com/questions/4445706/post-increment-and-pre-increment-concept –

在C++中,当递增或递减在表达式中使用的“++”或位置“ - ”事项。 如果操作符在变量之前,那么递增或递减将在表达式结束之前完成,在相反的情况下递增或递减将在整个表达式执行之后完成。

int b = ++a; // first add +1 to a, then assign a to b 
int b = a++; // assign a to b, then add +1 to a 

在这里你去:

  • 启动= 3
  • 启动B = 2;
  • 将(a)的值赋值给b,所以b = 3并将a增加到4;
  • 打印B + 1,其为4
+1

这将是很好的解释前缀vs后缀 –

在语句:

b = a++ 

a用于分配被评估以b之后a然后递增所以a = a+1

在另一方面:

b = ++a 

增量a所以a = a+1以前a然后评估分配给b

你可以看看这里深:

Pre-increment or post-increment in C/C++