金沙国际app-金沙国际手机app下载

金沙国际app包括教育和科研机构建设、学科共建等,欢迎来到金沙国际手机app下载这里有多种线上娱乐游戏,金沙国际app获颁“创意中国榜”中国文化创意产业领军企业,是一家专业从事网络休闲平台游戏开发、运营的服务性企业。

当前位置:金沙国际app > 网络世界 > 【金沙国际app】你好,C++(9)坐216路公交车去买

【金沙国际app】你好,C++(9)坐216路公交车去买

文章作者:网络世界 上传时间:2019-10-11

8种基本数据类型及其字节数,数据类型字节数

数据类型 关键字 字节数
数值型 整数型 byte 1
short 2
int 4
long 8
浮点型 float 4
double 8
布尔型  boolean 1(位)
字符型  char 2

http://www.bkjia.com/Javabc/1216694.htmlwww.bkjia.comtruehttp://www.bkjia.com/Javabc/1216694.htmlTechArticle8种基本数据类型及其字节数,数据类型字节数 数据类型 关键字 字节数 数值型 整数型 byte 1 short 2 int 4 long 8 浮点型 float 4 double 8 布尔型...

文章出处:知乎专栏 “你好,C++”,作者:陈良乔

链接:https://zhuanlan.zhihu.com/nihaoCPP?utm_source=com.jianshu.haruki&utm_medium=social

姓名:石傅琨 学号:17101223437

【嵌牛导读】从每天早上睁开眼睛的那一刻开始,我们几乎每时每刻都在与数字打交道:从闹钟上的6点30分,到上班坐的216路公共汽车;从 新闻中说的房价跌到了100元每平米到回家买菜时的西红柿3.5元一斤。我们生活在一个充满数字的世界。程序是对现实世界的描述与表达,自然也会有很多数 字需要表达。为了做到这一点,C++提供了丰富多样的数值数据类型,从整数到小数、从单精度浮点数到双精度浮点数、从有符号数到无符号数。有了这些数值数 据类型,我们就可以定义各种变量来表示现实世界中的各种数字了。

【嵌牛鼻子】C语言、C++、数据类型

【嵌牛提问】数据类型有哪些?

【嵌牛正文】

3.3 数值数据类型

在现实世界中,最常见的数字应该是各种大大小小的整数了,而在C++中,我们用整型数值类型来表示现实世界中的整数。根据这些数据类型所占用的内存资源多少和取值范围的不同,整型数值类型又被分为以下四种。

  1. 基本型

其类型说明符为int(integer),在内存中占4个字节,其取值范围从-2147483648到2147483647, 基本上包含了我们最常见的整数,能够满足我们在程序中对表达整数的需要。同时,又因为它是CPU原生支持的整型类型,所以处理起来最快。因此,int是我 们最为常用的整型数值类型。

特别注意:数据类型的字节数在不同环境下可能有不同值

需要注意的是,我们在这里所讨论的各种数据类型所占用的内存字节数,只是在典型情况(32位操作系统,32位主流编译器)下的字节数。在一些特殊环 境(64位操作系统、特殊的编译器)下,各种数据类型所占用的字节数可能有所不同。所以,要想获得某种数据类型在当前环境下所占用的字节数,最好的方法是 使用sizeof关键字动态地计算其实际的字节数,而不是使用某个固定的字节数。具体方法,可以参看后文对sizeof的介绍。

  1. 短整型

有时候,我们需要表达的整数只是在一个比较小的范围内,比如,我们要表达一个学生的成绩,最小可以到0,而最大也只能到 100,如果这时仍旧使用int这种取值范围比较大的数据类型来表示,就显得有点资源浪费了。现在正在倡导创建节约型社会,而C++世界也不例外。为了表 示这种取值范围相对较小的整数,C++提供了短整型数据类型,其类型说明符为short或short int,所占内存字节数只有int类型的一半,也就是两个字节。自然地,其取值范围也相应地缩小为从- 32768到32767,我们可以用它来表达生活中常见的整型数值。但是,相对于int类型,short类型的处理速度要慢一些,而内存又相对比较便宜, 所以,我们往往为了性能而牺牲空间,更多的使用int类型来代替short类型。

  1. 长整型

在某些情况下,我们并不知道我们需要表达的整数到底有多大,有可能是几千,也有可能是几千个亿。在这种情况下,我们总是希望得 到一个当前平台支持的最大整型数值类型,以避免因取值范围太小而造成的错误。在C++中,我们用长整型来表示当前平台原生支持的最大整型数值类型。其类型 说明符为long或long int。在32位平台上,它占用4个字节的内存,其取值范围与int相同。而在64位平台上,其占用的内存扩展为8个字节,取值范围也相应地增大为骇人听 闻的从-9223372036854775808到9223372036854775807,绝对满足我们对整数取值范围的需要。

  1. 长长整型

在C++中,为了表示现实世界中的某些特别大特别大的整数,比如某个星系的星球总数,我们还需要用到取值范围更大的长长整型。 它的类型说明符是long long或long long int,在内存中占8个字节。其取值范围已经是个天文数字,所以它也只是更多地用于天文计算等特殊的科学计算中。

另外,还可以用关键字unsigned或者signed对这些整型数据类型进行修饰,构成无符号或有符号的整型数据类型。所谓 的有无符号,是指这些数值在内存中的第一位是用来表示正负符号还是用来表示数值。在默认情况下,上面所介绍的整型数据类型都是有符号的,只要在其类型说明 符之前加上unsigned关键字,就成为了对应的无符号整型数据类型。

int a;  // 默认为有符号int类型

signed short b;  // 有符号short类型

unsighed long c; // 无符号long类型

各种无符号类型所占用的内存空间与相应的有符号类型占用的内存空间是相同的。但由于无符号类型省去了符号位,故不能表示负数,而相应的,它所能够表 示的正数范围会扩大到原来的两倍。当我们事先知道要表示的整数不会出现负数的时候,可以使用unsigned修饰某个整型数值类型,使其成为一个无符号的 数据类型,扩展其在正数上的取值范围。表3-3列出了在典型的32位平台上,C++中各种整型数值数据类型、取值范围、位数和使用规则。

表3-3 整型数值类型

数 据 类 型

位数

取 值 范 围

使 用 规 则

int

32

-2147483648 ~ 2147483647

最常用的,也是处理速度最快的整型数值类型,用来表示常见的整型数值

signed int

32

-2147483648 ~ 2147483647

在使用上等同于int类型,所以很少使用,基本上都是直接使用int类型

unsigned int

32

0 ~ 4294967295

无符号的int类型,只能表示正整数。当要表示的整数只有正数值的时候,可以使用无符号数据类型

short int

16

-32768 ~ 32767

通常简写为short,用以表示范围较小的整数以节省内存资源,但处理速度有所减低

signed short int

16

-32768 ~ 32767

unsigned short int

16

0 ~ 65535

long int

32

-2147483648 ~ 2147483647

通常简写为long,它代表了当前平台上CPU原生支持的最大整型数据类型。在32位平台上,long和int的取值范围是相同的,只是在64位操作系统上两者有差别,这一点在开发跨平台的应用程序时需要注意

signed long int

32

-2147483648 ~ 2147483647

unsigned long int

32

0 ~ 4294967295

long long int

64

-9223372036854775808 ~

9223372036854775807

比long还要long的整数,我们不用去数它到底有多少位,只需要知道,当要表示很大很大的整数时,就可以用它

知道更多:用sizeof牌体重计为数据类型量体重

在现实世界中的人们,无论高矮都有个体重,人们根据自己的体重来决定穿多大尺寸的衣服;而在C++世界中的各种数据类型,同样也都有一个体重,而数据类型的体重,决定了它需要占用多少字节的内存空间。一个数据类型所占用的内存字节数,也就是它的体重。

为什么我们需要知道数据类型的体重?在通过指针直接操作内存对数据进行读写访问的时候,我们往往需要知道这种数据类型所占 用的内存字节数,这样我们才能为这些数据分配合适的内存资源,就像我们要为一个人做衣服,先要知道他的身高一样。例如,我们想动态地申请一段内存来保存 1024个long类型的数据,这时我们就需要根据每个long类型数据占用的内存字节数来计算一共需要申请多少字节的内存资源来存放这些数据。虽然我们 知道long类型的字节数大多数时候是4个字节,但是,我们不能在程序中直接使用这个从天而降的魔数(Magic Number),那样一个不知从何而来的数字会让程序的可维护性变得很差;同时,数据类型占用的字节数就像人的体重一样,是会根据环境的变化而发生变化 的,并不是所有平台上的long类型都是4个字节。如果我们在程序中用固定的数字4来表示long数据类型的字节数,在某些平台上这个程序也许会运行正 常,但当这个程序移植到另外一个平台时,将有可能因为long数据类型字节数的不同而产生错误。为了提高程序的可维护性,保证程序的可移植性,我们必须在 代码中动态地获得数据类型在当前平台上的字节数,并最终计算出需要的内存资源总数。

所有这些关于数据类型字节数的问题,我们都可以使用C++提供给我们的sizeof牌数据类型体重计来一劳永逸地轻松解 决。sizeof实际上是C++中的一个操作符,它可以对一个数据类型或者这个数据类型的一个变量或数组进行操作,从而获得这个类型或者变量(数组)实际 占用的内存字节数。例如,我们在用memset()函数清零某个数组时,通常用它来计算这个数组的字节数:

#include <cstring> // 引入memset()函数所在的头文件

// …

// 定义数组

int res[1024];

// 用sizeof计算res占用的字节数

memset(res,0,sizeof(res));

这里我们在用memset()函数对数组res进行清零操作时,第一个参数是数组名,也就是数组的首地址,第二个参数是初始值,通常是0,第三个参 数就是用sizeof关键字计算出来的res数组所占用的字节数了。幸亏有sizeof这个体重计,要不然我们这里要写成更复杂的“1024*4”。这种 复杂的形式虽然也同样能够达到计算数组体积的目的,但是,很容易出错,且毫无可移植性可言。而这,也正是sizeof体重计受到程序员们钟爱的原因。

sizeof牌数据类型体重计不仅可以获得内建数据类型(例如,int、long和double等)的体重,它同样也可以获得自定义的结构体或者类所占用的字节数(包含因为字节对齐而添加的字节数)。例如:

// 定义一个结构体

struct Human

{

    char cName[3];  // 3个字节

    // char pad;      // 这里因字节对齐,编译器补齐一个字节

    int nAge;      // 4个字节

};

// 声明一个结构体变量

Human huZengmei;

本文由金沙国际app发布于网络世界,转载请注明出处:【金沙国际app】你好,C++(9)坐216路公交车去买

关键词: