开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 26 天,点击查看活动详情
i++ 和 ++i
我们知道,i++ 和 ++i语句都是让变量 i 增加 1,效果等同于 i+=1。
下面来看这段例子:
int i1 = 1, s1 = 0;
int i2 = 1, s2 = 0;
s1 += i1++;
s2 += ++i2;
cout << "s1: " << s1 << endl;
cout << "s2: " << s2 << endl;
运行结果:
s1: 1
s2: 2
在上述语句中,变量 i1 和 i2都由初始值 1 变成了 2。但是 s1 和 s2 的值却不一样。
下面是两个表达式的等效写法:
s1 += i1++; // 等效于: s1 += i1; i1 += 1;
s2 += ++i2; // 等效于: i2 += 1; s2 += i2;
因此,作为表达式的元素:
- 加号在变量
i1的后面时(i1++),表达式会先取i1原来的值参与运行,再对变量i1进行自增操作,因此s1的值为1. - 加号在变量
i2的前面时(++i2),表达式会先对变量i2进行自增操作,再将它的值拿来参与运算,因此s2的值为 2.
把
++改为--也是同样的道理(自增改为自减)。
【深基4.例11】数列求和
题目描述
计算 的值,其中正整数 不大于 100。由于你没有高斯聪明,所以你不被允许使用等差数列求和公式直接求出答案。
输入格式
输入一个正整数 。
输出格式
输出一个正整数,表示最后求和的答案。
- 样例输入
100
- 样例输出
5050
提示
数据保证,。
代码举例
#include<iostream>
using namespace std;
int main(){
int n;
cin >> n;
int sum = 0, i = 0;
while(n--) {
sum += ++i;
}
cout << sum;
return 0;
}
【深基4.习5】求极差 / 最大跨度值
题目描述
给出 和 个整数 ,求这 个整数中的极差是什么。极差的意思是一组数中的最大值减去最小值的差。
输入格式
第一行输入一个正整数 ,表示整数个数。
第二行输入 个整数 ,以空格隔开。
输出格式
输出一个整数,表示这 个整数的极差。
- 样例输入
6
1 1 4 5 1 4
- 样例输出
4
提示
数据保证,,。
代码举例
#include<bits/stdc++.h>
using namespace std;
int main(){
int n;
cin >> n;
int tmp, maxNum = -1, minNum = 2000;
for(int i = 0; i<n; i++) {
cin >> tmp;
maxNum = max(maxNum, tmp);
minNum = min(minNum, tmp);
}
cout << maxNum - minNum;
return 0;
}