学习背景:
在现实生活中一些需要计数的场景下我们会用到计数器,如空姐手里记录乘客的计数器,跳绳手柄上的计数器等。累加器是累加器求和,以得到最后的结果。计数器和累加器它们虽然是基础知识,但是应用广泛,接下来分别介绍计数器与累加器,本文章先介绍计数器。
(一)、计数器:i=i+1
语句"i=i+1;"每执行一次,i的值就增加1。这样变量i可以起到统计次数的作用,有计数的功能。赋值符号"="左右两边的变量“i”不能从数值的角度去理解,它是存储空间的概念,就好比向水盆中加水,然后“+1”就表示拿水瓢往水盆中加水,“=”右边的“i”表示拿水瓢加水前的状态,“=”左右的“i”表示拿水瓢加水之后的状态。该语句运行一次就表示往水盆里加了一瓢水,最后往水盆里加了多少瓢水,只要看i最后的取值就可以了。其执行过程如下:
程序语句 | i的值 |
i=0; | 0 |
i=i+1 | i(1) <- 0+1 |
i=i+1 | i(2) <- 1+1 |
i=i+1 | i(3) <- 2+1 |
i=i+1 | i(4) <- 3+1 |
i=i+1 | i(5) <- 4+1 |
温馨提示:
1、计数器在计算前需要清零,即i要赋值为0。
2、计算机程序中,变量可以先定义,再赋值,也可以在定义的同时进行赋值,在定义变量的同时赋初值称为变量初始化。在程序设计中,涉及累加、计数等情况时需要将变量初始化,否则计算机会给变量随机赋一个值,对计算结果有一定影响。
"i=i+1"通常简写利用成"i++"与"++i"两种形式,可单独成句。
1)"i++"在赋值和参与运算的过程中,先运算再自增,如语句在"x=i++;"的执行顺序是先将i的值赋值给x,然后再执行"i++"自增运算。
2)"++i"在赋值和参与运算的过程中,先自增再运算,如语句"x=++i;"的执行顺序是先执行"++i"自增运算,再进行赋值。
其执行过程如下:
程序语句 | x的值 | i的值 |
i=1; x=i++; | 1 | 2 |
i=1; x=++i; | 2 | 2 |
与计数器类似,"i=i-1",也可以简写成"i--"或者"--i",表示自减运算,它们可以单独成句,其意义与"i=i-1"的含义是一样的。但是,涉及赋值时,就会不同,"x=i--;"是先赋值再运算。而"x=--i;"是先运算再赋值。
实战训练:
阅读以下程序,写出程序运行结果。
#include<bits/stdc++.h>
using namespace std;
int main(){
int x,y,a=50,b=50;//定义变量x、y、a、b,定义a和b时同时初始化,初始值均为50
x=a++;//先赋值再自增
y=++b;//先自增再赋值
cout<<"x: "<<x<<",y:"<<y<<endl;
cout<<"a: "<<a<<",b:"<<b<<endl;
x=a--;//先赋值再自减
y=--b;//先自减再赋值
cout<<"x: "<<x<<",y:"<<y<<endl;
cout<<"a: "<<a<<",b:"<<b<<endl;
return 0;
}
程序分析:
题目中的整型变量a,b的初始值均为50,第5行将a的值赋值给x之后,a再进行自增运算,此时x的值为50,a的值为51;第6行b先进行自增运算,再赋值,此时b的值为51,y的值也为51。同理程序第9行先进行赋值再自减,x的值为51,a的值为50,第10行b的值先自减,再赋值给y,b的值为50,y的值也为50。
输出结果:
x: 50,y:51
a: 51,b:51
x: 51,y:50
a: 50,b:50