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;
}

输出结果

posted @ 2024-05-14 22:10  new-code  阅读(5)  评论(0编辑  收藏  举报