C++ Primer Plus P37 程序清单3.2(演示程序试图超越整型的限制时将产生的后果)——中职

C++ Primer Plus P37 程序清单3.2

演示程序试图超越整型的限制时将产生的后果

/*
C++ Primer Plus P37 程序清单3.2
演示程序试图超越整型的限制时将产生的后果
*/

//头文件
#include<iostream>
#include<climits>

//宏区

/*const int ZERO = 0*/												//这是C++推荐的定义常变量(宏)的写法
#define ZERO 0														//#define预处理器是C语言带入C++的,C++推荐写法是使用常变量const。

//主函数
int main(void)
{
	using namespace std;																			//编译指令
	short sam = SHRT_MAX;																			//定义sam是最大值
	unsigned short sue = sam;																		//定义无符号的短整型sue等于短整型sam的最大值

	cout << "Sam has " << sam << " dollars and Sue has " << sue << " dollars deposited." << endl;		//显示两种类型的值
	cout << "Add $1 to each account." << endl;															//对两个不同的数据类型的值进行+1的操作
	
	sam = sam + 1;
	sue = sue + 1;
/*解释下段代码:sam是短整型其最大值为SHRT_MAX,所以+1后会从最小值开始往后加1,而sue是无符号短整型,所以未到最大值,不然从正号的最小值0开始*/
	cout << "Now Sam has " << sam << " dollars and Sue has " << sue << " dollars deposited." << endl;	//显示两种类型的+1后的值
	cout << "Poor Sam!" << endl;
	
	sam = ZERO;																							//重置sam
	sue = ZERO;																							//重置sue

	cout << "Sam has " << sam << " dollars and Sue has" << sue << " dollars deposited." << endl;		//显示两种类型重置后的值
	cout << "Take $1 from each account." << endl;														//对两个不同的数据类型的值进行-1的操作

	sam = sam - 1;
	sue = sue - 1;
	/*解释下段代码:sam是短整型其最小值为SHRT_MIN,所以-1后会从0值开始往后-1,而sue是无符号短整型,不嫩有符号,所以自然-1后从最大值开始了*/
	cout << "Now  Sam has " << sam << " dollars and Sue gas " << sue << " dollars deposited." << endl;
	cout << "Lucky Sue!" << endl;

	return 0;
}

总结:本代码主要想告诉,无符号的数据类型在最小值0下,去-1会变成最大值。例如:0,1,2,3,如果0 去一直-1则3,2,1,0,3,2,1,0的循环,普通的整型一样,假设-1~2,如果-1去一直-1,则:-1,2,1,0,-1,2的循环,如果2去一直+1,则一样的道理。

这里需要注意,#define是C代入C++的,一般情况下C++使用常变量const去代替宏的使用

/*const int ZERO = 0*/												//这是C++推荐的定义常变量(宏)的写法
#define ZERO 0		

感谢观看

再次感谢~

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值