本页目录
1-3 赋值¥自增运算符
1. 赋值运算符
1.1 “=”运算符
C++中的赋值运算符是“=”号,它用于将右侧的值赋给左侧的变量。赋值运算符是一种二元运算符,因为它需要两个操作数,一个在左侧,一个在右侧。 举例说明:
js
int a = 10;
int b = 20;
a = b;
1
2
3
2
3
1.2复合算数赋值运算符
作用:用于将表达式的值赋给变量 赋值运算符包括以下几个符号:
| 运算符 | 术语 | 示例 | 結果 |
|---|---|---|---|
| = | 赋值 | a=2;b=3; | a=2;b=3; |
| += | 加等于 | a=0; a+=2; | a=2; |
| -= | 减等于 | a=5; a-=3; | a=2; |
| *= | 乘等于 | a=2; a*=2; | a=4; |
| /= | 除等于 | a=4; a/=2; | a=2; |
| %= | 模等于 | a=3; a%2; | a=1; |
示例:
js
x += 2; // 等价于 x = x + 2;
x -= 3; // 等价于 x = x - 3;
x *= 4; // 等价于 x = x * 4;
x /= 2; // 等价于 x = x / 2;
x %= 3; // 等价于 x = x % 3;
1
2
3
4
5
2
3
4
5
使用复合算数赋值运算符可以使代码更加简洁、易读,并且能够提高代码的效率。
1.3 测试题
下列代码的运行结果是?
第一题
js
#include <iostream>
using namespace std;
int main()
{
int a = 5;
int b = 3;
int c = 7;
a += b;
c *= b;
cout << "a = " << a << endl;
cout << "b = " << b << endl;
cout << "c = " << c << endl;
return 0;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
结果:
a = 8
b = 3
c = 21
第二题
js
#include <iostream>
using namespace std;
int main()
{
int a = 5;
int b = 10;
a += b;
b *= a;
a /= 2;
b %= 3;
a -= b;
cout << "a = " << a << endl;
cout << "b = " << b << endl;
return 0;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
结果:
a = 7
b = 0
2. 自增运算符
自增运算符是一种C中的算术运算符,它可以将操作数的值加1。在C中,有两种自增运算符:前缀自增运算符x和后缀自增运算符x。 它们的区别在于:
- 前缀自增运算符会先将操作数加1,然后再将结果返回;
- 而后缀自增运算符会先返回操作数的原始值,然后再将操作数加1。
下面是使用自增运算符的示例代码:
js
#include <iostream>
using namespace std;
int main()
{
int x = 5;
int y = ++x; // 前缀自增运算符,将x的值加1,再将结果赋给y
int z = x++; // 后缀自增运算符,先将x的值赋给z,再将x的值加1
cout << "x = " << x << endl;
cout << "y = " << y << endl;
cout << "z = " << z << endl;
return 0;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
输出结果为:
js
x = 7
y = 6
z = 6
1
2
3
2
3
练习题1:
js
#include <iostream>
using namespace std;
int main()
{
int x = 3;
int y = ++x;
int z = x++;
cout << "x = " << x << endl;
cout << "y = " << y << endl;
cout << "z = " << z << endl;
return 0;
}
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
练习题2:
js
#include <iostream>
using namespace std;
int main()
{
int x = 3;
int y = ++x;
int z = x++;
cout << "x = " << x << endl;
cout << "y = " << y << endl;
cout << "z = " << z << endl;
return 0;
}
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
3. 三变量交换算法
给定两个变量a,b,交换后输出a,b。 三变量交换法是在对两个变量交换值的时候需要引用第三个变量而得名的。在这种方法中,我们需要使用一个临时变量来存储其中一个变量的值,以便在交换过程中不会丢失任何值。具体步骤如下:
- 定义三个变量a、b、temp。
- 将a的值赋给temp。
- 将b的值赋给a。
- 将temp的值赋给b。
下面是用使用三变量交换法交换两个变量的值的例子:
js
#include <iostream>
using namespace std;
int main(){
int a,b;
cin>>a>>b;
int t=a;
a=b;
b=t;
cout<<a<<" "<<b;
return 0;
}
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
输入输出结果为:
js
1 2
2 1
1
2
2
在这个例子中,我们使用了三个变量a、b和temp来进行交换。首先输出了变量a和b的值,然后使用temp变量来存储a的值,接着将b的值赋给a,将temp中存储的值赋给b。最后,输出了交换后的结果。 三变量交换模板为:
js
int a=1,b=2;
int t=a;
a=b;
b=t;
1
2
3
4
2
3
4
不使用第三变量交换两个变量的值还有一种数值算法:
js
int a=1,b=2;
a+=b;
b=a-b;
a-=b;
1
2
3
4
2
3
4
请思考上述代码的实现原理,以及有何弊端。 通常我们在算法题中,如果题目要求是给定两个变量,让你交换两个变量的值后顺序输出这两个变量,你可以这么做:
js
#include <iostream>
using namespace std;
int main(){
int a,b;
cin >> a >> b;
cout<< b << a;
return 0;
}
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
使用位逻辑运算符异或^(了解即可)
a=a^b;
b=a^b;
a=a^b;