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

时间:2014-12-17 04:59:02

标签: c++ string

我正在编写一小段代码,如果条件匹配,我必须增加变量'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。它与运营商的优先级有关吗?

3 个答案:

答案 0 :(得分: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;

这样的表达式的值

答案 1 :(得分:-1)

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

输出:

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

答案 2 :(得分:-2)

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

j+1,您是要为j的值添加一个,但它不会影响j的值。