栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

c++从零开始---数据类型之整型1

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

c++从零开始---数据类型之整型1

内置的 c++ 类型分两组:基本类型和复合类型。基本类型包括整型和浮点型。在基本类型的基础上创建的为复合类型,包括数组、字符串、指针和结构。
本节主要介绍基本类型中的整形。

整数就是没有小数部分的数字,比如2、98、-1、0。c++为用户提供好几种整型,不同的 c++ 整型提供不同的内存量来储存整数,使用的内存量越大,可以表示的整数范围也越大。术语宽度用于描述储存整数时使用的内存量,使用的内存越多则越宽。符号类型可表示正值和负值,无符号类型不能表示负值。c++ 的基本整型包括(按宽度递增的顺序排列)char 、short 、int、long、long long,其中每种类型都有符号类型和无符号类型,因此总共有10种类型可供选择。

1、位和字节

计算机内存的基本单元是位(bit),每一个位有两种状态:0和1 。因此8位的组合有 2^8 =256种,可以表示 0 ~ 255 或者 -128 ~ 127 。
通常一个字节(bite)指的是8位的内存单元。通常来说可以用8位字节来度量计算机的内存量,即1KB = 1024 B,1MB = 1024KB。但是c++略有不同,c++字节由至少能够容纳实现的基本字符集的相邻位组成,也就是说,可能取值的数目必须等于或超过字符数目。

比如在ASCII码中,基本字符不到128个(基本字符就是数字、字母以及一些特殊符号如*),那么一个字节就可以用8位表示,但是如果编程使用的字符集超过了128个(比如国际编程中使用的Unicoude),那么用8位字节不能完全表示基本字符,编程就会出现错误。比如我编程时需要符号 z ,但是程序不能给出符号 z。

2、整型short、int、long、long long 2.1 各个类型需要满足的条件
  • short 至少 16 位;
  • int 至少与 short 一样长;
  • long 至少 32 位,且至少与 int 一样长;
  • long long 至少 64 位,且至少与 long 一样长。

当前很多系统都使用最小长度,即short为 16 位,long为 32 位,这样 int 有多种选择,即可以为 16 位、24 位和 32 位。

2.2 头文件 climits

头文件 climits 定义了符号常量,如 INT_MAX 表示 int 能够储存的最大值。在使用 16 位的 int 的老系统中,climits 文件将 INT_MAX定义为32767(2^16 - 1)

符号常量为预处理命令定义的,将一个符号定义为一个常量,在之后的程序段中,使用这个符号即表示使用这个常量,这样的方法是为了方便修改常量值,因为当需要修改时,只需要更改程序段开头的符号常量的定义值

2.3 初始化

初始化将赋值与声明合并在一起,这样可以避免以后忘记给它赋值的情况发生。因为如果不对函数内部定义的变量进行初始化,该变量的值将是不确定的,这意味着该变量的值将是它被创建之前,相应内存单元保存的值。初始化示例如下:

int n_int = 32767;
int n_int(32767); // c++ 里面独有的初始化方法
3、无符号整型

创建无符号整型时,使用关键字 unsigned,此处的 unsigned 实际为 unsigned int 的缩写。示例如下:

unsigned short a;
unsigned int b;
unsigned long c;
unsigned long long d;

同样可使用与符号整型相同的初始化方法进行初始化。

另外,因为储存数据时采用的是二进制计数,当数字溢出时,其值将为范围另一端的取值。比如 8 位数据,当二进制表示为11111111时,此时再加上一个数,那么该数变为 0 。

下面用一段程序进行演示:

// exceed .cpp -- exceeding some integer limits
#include 
#include 
int main()
{
	using namespace std;
	short a = SHRT_MAX;  //将 short 的最大值赋值给a
	unsigned short b = 0;//给无符号 short 变量 short 赋值为0
	cout << "now a and b is: " << a << ",  " << b << endl; //输出a 和 b
	a = a + 1; // a 本身为 short 可以表示的最大值,现在给 a 加 1,那么 a 溢出,得到 short 范围另一端的取值
	b = b - 1; // b 本身为无符号类型,给其减 1 ,那么其值同样溢出,得到另一端的取值
	cout << "a + 1 = :" << a << endl << "b - 1 = :" << b << endl;
	return 0;
}

输出结果为:

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/429881.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号