我正在编写一小段代码,如果条件匹配,我必须增加变量'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。它与运营商的优先级有关吗?
答案 0 :(得分:1)
与这些表达式有两个不同之处:表达式的值是什么以及a
是否会被更改。表达
a + 1
其值是操作数a
和1
的总和,a
本身不会更改。
表达
a++
其值是增量前a
的值,a
将被更改。例如,如果a
以下列方式定义
int a = 0;
并且还有另一个变量b
定义为
int b;
然后在声明之后
b = a++
b
将等于0
,a
将等于1.而声明后
b = a + 1;
b
将等于1
,a
将不会被更改,因为它与之前的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的值。