CCF中学生计算机程序设计入门-04-揭秘变量的自增与自减魔法
1 变量的自增和自减
在C++语言中,整型或浮点型变量值的加1可以使用自增运算符(++) ,整型或浮点型变量值的加1可以使用自减运算符(--)
自增和自减运算符处理逻辑一致,整形和浮点型处理逻辑一致,因此,先以整形自增入手
参考如下代码初步理解
#include<iostream>
using namespace std;
/*
变量的自增和自减测试
使用整形变量int测试
*/
int main(){
int a=2;//定义了一个int变量,并把2赋值给变量a
cout<<"初始a的值为:"<<a<<endl;//输出a的值为2
a++;//通过自增变量运算符++,给变量a加1,此时a的值变为3
cout<<"自增后a的值为:"<<a<<endl;//输出a的值为3
a--;//通过自减变量运算符--,给变量a减1,此时a的值变为2
cout<<"自减后a的值为:"<<a<<endl;//输出a的值为2
return 0;
}
输出结果
2 自增运算符位置
1) 自增运算符在变量后 a++
自增运算符在变量后,变量本身加1,给另外变量赋值不变
#include<iostream>
using namespace std;
//自增运算符在变量后,变量本身加1,赋值不变
int main(){
int a,b;//声明整形变量a和b
a=1;//把1赋值给整形变量a
b=a++;//先将a变量的值1赋值给变量b所以b为1,再把a加1,此时a为2
cout<<"a的值:"<<a<<endl;//a为2
cout<<"b的值:"<<b<<endl;//b为1
return 0;
}
输出结果
2) 自增运算符在变量前 ++a
自增运算符在变量前,变量本身加1,给另外变量赋值加1
#include<iostream>
using namespace std;
/*
自增运算符在变量前,变量本身加1,给另外变量赋值加1
++a
*/
int main(){
int a,b;//声明整形变量a和b
a=1;//把1赋值给整形变量a
b=++a;//先将a变量的值加1,此时a变为2, 再把a的值2赋值给b,此时b为2
cout<<"a的值:"<<a<<endl;//a为2
cout<<"b的值:"<<b<<endl;//b为2
return 0;
}
输出结果
3 浮点数的自增
浮点数的自增和整形的自增具有相同的运算规则
#include<iostream>
using namespace std;
/*
自增运算符在变量后(a++),变量本身加1,赋值的变量不变
a=3.14;b=1;b=a++;
结果a=4.14,b=3.14
自增运算符在变量前(++a),变量本身加1,赋值的变量+1
a=3.14;b=1;b=a++;
结果a=4.14,b=3.14
*/
int main(){
float a,b;//声明浮点型变量a和b
a=3.14f;//把3.14赋值给浮点型变量a
b=a++;//先将a变量的值3.14赋值给变量b所以b为3.14,再把a加1,此时a为4.14
cout<<"a的值:"<<a<<endl;//a为4.14
cout<<"b的值:"<<b<<endl;//b为3.14
return 0;
}
运行结果
4 变量的自减
变量的自减和变量自增具有相同的运算规则
1) 整数的自减
#include<iostream>
using namespace std;
/*
自减运算符在变量后(a--),变量本身减1,赋值的变量不变
a=1;b=1;b=a--;
结果a=0,b=1
自增运算符在变量前(--a),变量本身减1,赋值的变量减1
a=1;b=1;b=--a;
结果a=0,b=0
*/
int main(){
int a=1,b=1;
b=a--;//先把a的值1赋值给b,a再减1,所以a=0,b=1
cout<<"a的值:"<<a<<endl;
cout<<"b的值:"<<b<<endl;
a=1,b=1;//重新赋值测试--a
b=--a;//先把a的值1减1后的0赋值给b,所以a=0,b=0
cout<<"a的值:"<<a<<endl;
cout<<"b的值:"<<b<<endl;
return 0;
}
输出结果
2) 浮点数的自减
#include<iostream>
using namespace std;
/*
自减运算符在变量后(a--),变量本身减1,赋值的变量不变
a=3.14;b=1;b=a--;
结果a=2.14,b=3.14
自增运算符在变量前(--a),变量本身减1,赋值的变量减1
a=3.14;b=1;b=--a;
结果a=2.14,b=2.14
*/
int main(){
float a=3.14,b=1;
b=a--;//先把a的值3.14赋值给b,a再减1,所以a=2.14,b=3.14
cout<<"a的值:"<<a<<endl;
cout<<"b的值:"<<b<<endl;
a=3.14,b=1;//重新赋值测试--a
b=--a;//把a的值3.14减1后的2.14赋值给b,所以a=2.14,b=2.14
cout<<"a的值:"<<a<<endl;
cout<<"b的值:"<<b<<endl;
return 0;
}
输出结果
5 表达式的值
1) 自减运算符表达式的值
(n--) = n ,(--n)=n-1
#include<iostream>
using namespace std;
int main(){
int n=10;
while(n>0){
/*
(n--)输出当前值,如果n=10,则(n--)=10
所以依次输出10 9 8 7 6 5 4 3 2 1
*/
cout<<n--<<" ";
}
cout<<endl;
n=10;//恢复n的值
while(n>0){
/*
(--n)输出当前值-1,如果n=10,则(--n)=9
所以依次输出9 8 7 6 5 4 3 2 1 0
*/
cout<<--n<<" ";
}
return 0;
}
输出结果
2) 表达式作为数组下标使用
#include<iostream>
using namespace std;
int main(){
int a[]={1,2,3,4,5,6,7,8,9,10};
int i=0;
while(i<10){
/*
(i++)=i,所以下标从0~9
对应值 1 2 3 4 5 6 7 8 9 10
*/
cout<<a[i++]<<" ";
}
cout<<endl;
i=-1;//注意范围
while(i<9){
/*
(++i)=i+1 所以i要从-1开始,才保证下标从0开始
对应值 1 2 3 4 5 6 7 8 9 10
*/
cout<<a[++i]<<" ";
}
return 0;
}
输出结果
作者:newcode 更多资源请关注纽扣编程微信公众号
从事机器人比赛、机器人等级考试、少儿scratch编程、信息学奥赛等研究学习