(二十六)符号类型

简介:

比如有一个short a; 我们有时候会给前面加上一个unsigned ,就变成了unsigned short a;

这个时候呢,因为short是16位,16位能表示出65536种数字。如果是short a;他的范围就是-32768 ~ +32767。加上signed也是一样的,如果加上unsigned呢,他的范围就变成了0 ~ 65535 了。

ps:unsigned 本身是 unsigned int 的缩写。

例如short a;  这里a的范围是-32768 ~ +32767

而unsigned b; 这里b的范围是0 ~ +65535

用一个表格来说明:

short a(以下是a的取值)

a-1

a+1

0

-1

1

-32768

32767

-32767

32767

32766

-32768

a的取值范围

-32768 ~ +32767

 

unsigned b(以下是b的取值)

b-1

b+1

0

65535

1

1

0

2

65535

65534

0

b的取值范围

0 ~ 65535

 

上代码,注释有解释:


#include <iostream>
#define ZERO 0	//make ZERO symbol for 0 value 。定义ZERO为0??(是这样么?)
#include <climits> //define INT_MAX as largest int value .规定INT_MAX 成为int的最大值

int main()
{
	using namespace std;
	short sam = SHRT_MAX; //initialize a varible to max value 。初始化一个变量,让他是最大值。这里初始化sam(后面代表Sam的金钱)是16位字符能表现的最大数字。
						//因为short(非无符号类型)的范围是-32768~+32767之间,因此他的最大值是32767.
	unsigned short sue = sam; //okay if varible sam already defined。 这里将sam的值赋值给sue(后面代表Sue的金钱)是无符号类型的short(其取值范围是0~65535)。
						//而sam的值32768在unsigned short范围内,因此sam和sue都是32767

	cout << "Sam has " << sam << " dollars and Sue has " << sue; //因为上文,所以两个值都是32767
	cout << " dollars deposited." << endl	//换行
		<< "Add $1 to each accout." << endl << "Now";	//告诉你,两个都要加1了

	sam = sam + 1;	//注意这里,因为sam是short的最大值,他加1所以就超过了short的取值范围。
	sue = sue + 1;	//由于sue尚不是unsigned的最大值,所以+1仅仅只是数字加1罢了。
	cout <<"Sam has "<<sam << " dollars and Sue has " << sue;	//sam因为超出了范围,所以自动循环到其取值范围的最小,即-32768。而sue正常,所以为+32768.
	cout << " dollars deposited.\nPoor Sam!" << endl;	//这一段结束了,再次换行。

	sam = ZERO;		//上面的#define ZERO 0应该是定义ZERO为数值0的意思吧?所以sam和sue都等于0了
	sue = ZERO;		//如上
	cout << "Sam has " << sam << " dollars and Sue has " << sue;	//显示出 sam和sue都是0。需要注意的是,sam的最小值不是0,而sue的最小值是0
	cout << " dollars deposited." << endl;
	cout << "Take $1 from each account." << endl << "Now ";	//本段结束,告诉你,下一段,sam和sue都将减一


	sam = sam - 1;	//sam和sue分别减一
	sue = sue - 1;
	cout << "Sam has " << sam << " dollars and Sue has " << sue;	//由于sam的最小值不是0,因此-1后是-1.而sue的最小值是0,-1后循环到最大值,即65535
	cout << " dollars deposited." << endl << "Luck Sue!" << endl;
	system("pause");
	return 0;

}


目录
相关文章
|
1月前
|
人工智能 Java API
Java Spring Boot 拥抱 AI 原生:从 API 调用到架构重构的进化之路
AI时代,Java开发者需突破调用API的表层模式,以Spring Boot为基石,推动从“菜单驱动”到“意图驱动”的范式变革。通过构建智能体为核心、工具化封装Service、强化记忆与安全管控的架构体系,融合RAG、异步降级、全链路监控等工程实践,实现AI原生应用的平滑演进。Spring Boot的稳定性与AI的智能性深度融合,将催生兼具可靠性与自主决策能力的企业级AI系统,开启Java技术新纪元。
136 8
|
安全 Shell 网络安全
基于Vulnhub靶场—DC4渗透测试过程
Vulhub是一个开源项目,专注于安全漏洞的复现和学习。包括Web应用、容器和操作系统漏洞。项目特点包括丰富的漏洞场景、详细的复现指南、便捷的环境部署和持续更新。通过Vulhub,安全从业者可以学习和研究漏洞利用技术。此外,文章还介绍了如何下载和搭建Vulhub靶机DC-4,并详细描述了利用Burp Suite进行密码爆破和命令执行,最终获取root权限的过程。
1621 0
|
9月前
|
自然语言处理 安全 程序员
程序员推荐的12款实用模板免费的WordPress主题
本文介绍了12款实用的免费WordPress主题,包括Sydney、PopularFX、Zakra等,涵盖企业、博客、美食等多种风格。这些主题功能丰富,如自定义布局、预制模板、AMP兼容等,适合不同需求的用户。每款主题均有精美预览图展示,建议收藏以备后续使用。更多主题可访问ztmao.com。
530 2
程序员推荐的12款实用模板免费的WordPress主题
|
数据采集 传感器 大数据
大数据中数据采集 (Data Collection)
【10月更文挑战第17天】
1002 2
|
前端开发 JavaScript 架构师
了解微前端,深入前端架构的前世今生
该文章深入探讨了微前端架构的起源、发展及其解决的问题,并详细讲解了微前端在现代Web应用中的实现方式与优势,帮助读者理解微前端的设计理念和技术细节。
|
机器学习/深度学习 人工智能 算法
AI计算机视觉笔记十一:yolo5+Deepsort实现目标检测与跟踪(CPU版)
DeepSORT是一种基于深度学习的计算机视觉跟踪算法,扩展了SORT算法,通过添加外观描述符减少身份切换,提高跟踪效率。本文档提供了DeepSORT环境搭建步骤,包括创建虚拟环境、安装依赖及解决常见错误等,最终实现人员和车辆的跟踪计数功能。适合无GPU设备的学习者参考。
1200 1
|
Serverless API
"Not Found"通常表示你试图访问的资源在服务器上不存在
"Not Found"通常表示你试图访问的资源在服务器上不存在
969 1
|
应用服务中间件 nginx Windows
windows下Nginx+RTMP部署
windows下Nginx+RTMP部署
277 0
|
人工智能 并行计算 安全
CentOS 停服之后,龙蜥操作系统的责任担当
众所周知,CentOS是一个基于Red Hat Enterprise Linux(RHEL)的开源操作系统,广泛应用于企业级服务器和云计算平台。然而2020年12月,CentOS宣布将停止维护CentOS;CentOS 7也将于2024年6月30日停服,意味着用户将无法获得官方补丁安装支持和系统升级,国内使用CentOS的企业,面临巨大的安全漏洞隐患等问题。国内开发者最关心的是替代CentOS的方案是什么?好在国光操作系统龙蜥操作系统“敢为人先”,体现出了责任担当的高度。那么本文就来聊聊CentOS停服之后,龙蜥操作系统做出的一系列措施来应对国内用户对于操作系统的转换。
1119 3
CentOS 停服之后,龙蜥操作系统的责任担当
|
存储 消息中间件 Kubernetes
多路复用I/O-select
多路复用I/O-select
197 0

热门文章

最新文章