a++和a+1有什么区别

What is the difference between a++ and a+1?

本文关键字:什么 区别 a+1 a++      更新时间:2023-10-16

我正在编写一小段代码,其中如果条件匹配,我必须递增变量"j"的值。

for(int i=0;i<input.length();i++){//input and base are of type string
        for(int j=0;j<base.length();j++){
            if(input[i]==base[j])input[i]=base[j+1];
        }
    }
cout<<input;

当我执行代码时,对于每个输入,我都会得到一个空白字符串作为输出。但是如果我使用 ++j 而不是 j+1,代码似乎工作正常。我在这里错过了什么?此外,j-1 和 --j 的代码工作正常。我面临的唯一问题是j+1。它与运算符的优先级有关吗?

与这些表达式相关的两个区别:表达式的值是什么以及a是否会更改。对于表达式

a + 1

它的值是操作数的总和 a1 并且a本身不会更改。

对于表达式

a++

其值是增量之前的a值,a将被更改。例如,如果按以下方式定义a

int a = 0;

还有另一个变量b定义如下

int b;

然后在语句之后

b = a++

b 将等于 0a 将等于 1。

b = a + 1;

b将等于1a不会改变,即它将像以前一样等于0

如果你的意思是表达

a += 1;

那么如果事实它与表达式a + 1具有相同的结果,只是 a 将被更改。

请注意,相对于表达式中的其他子表达式,a++是未排序的。

表达

a += 1;

类似于表达式

++a;

所以a++a += 1之间的区别与a++++a之间的区别相同。还要考虑到a++的结果是rvalue的(您不能为表达式分配任何值(,而a += 1的结果是lvalue的(您可以像( a += 1 ) += 1;一样为表达式赋值(

#include <iostream>
using namespace std;
int main ()
{
    int a=10,b=10;
    cout<<"a++ is n "<<a++;
    cout<<"n++b isn "<<++b;
}

输出:

"a++ is
    10
"++b is   
    11

j++;是j = j + 1。它是后递增运算符。j的值将在表达式的其他操作完成后增加。

j+1,是你在 j 的值上加 1,但它不会影响 j 的值。