【转】c++各种数据类型所占存储空间大小
变量是存储信息的单元,它对应于某个内存空间。用变量名代表其存储空间。程序能在变量中存储值和取出值。
在定义变量时,说明的变量名字和数据类型(如int)告诉编译器要为变量分配多少内存空间,以及变量中要存储什么类型的值。
内存单元的单位是字节。如果要建立的变量类型的长度是2个字节,变量就需要保留2个字节的内存。 变量的数据类型的作用之一是告诉编译器要为变量分配多少内存。
数据类型简称类型。在不同的计算机上,每个变量类型所占用的内存空间的长度不一定相同。例如,在16位计算机中,整型变量占2个字节,而在32位计算机中,整型变量占4个字节。C++的数据类型有基本数据类型和非基本数据类型之分。基本数据类型是C++内部预先定义的数据类型。 非基本数据类型包括指针、数组和结构以及类类型等,非基本数据类型也称用户定义数据类型。
基本数据类型有char(字符型)、int(整型)、float(浮点型)和double(双精度型)。在ANSI C++中,还有wchar_t(双字节字符型)和bool(布尔型),见图2-1。
图中type表示非空数据类型。
除上述一些基本数据类型外,还有一些数据类型修饰符,它用来改变基本类型的意义, 以便更准确地适应各种情况的需要。 修饰符有 long(长型符)、short(短型符)、signed(有符号)和unsigned(无符号)。
数据类型的描述确定了其内存所占空间大小,也确定了其表示范围。以在16位计算机 中表示为例,基本数据类型加上修饰符有表2-2的描述。
类型 说明 长度(字节) 表示范围 备注 char 字符型 1 -128~127 -27~(27-1) unsigned char 无符号字符型 1 0~255 0~(28-1) signed char 有符号字符型 1 -128~127 -27~(27_1) int 整形 2 -32768~32767 -215~(215-1) unsigned int 无符号整形 2 0~65536 0~(216-1) int 有符号整形 2 -32768~32767 -215~(215-1) shord int 短整形 2 -32768~32767 -215~(215-1) unsigned shord int 无符号短整形 2 0~65535 0~(216-1) signed shord int 有符号短整形 2 -32768~32767 -215~(215-1) long int 长整形 4 -2147483648~2147483647 -231~(231-1) unsigned long int 无符号长整形 4 0~4294967296 0~(235-1) signed long int 有符号长整形 4 -2147483648~2147483647 -231~(231-1) float 浮点型 4 -3.4×1038~-3.4×1038 7位有效位 double 双精度型 8 -1.7×10308~-1.7×10308 15位有效位 long double 长双精度型 10 -3.4×104392~1.1×104392 19位有效位
表2-2 常用基本数据类型描述
在大多数计算机上,short int表示2个字节长。short只能修饰int,short int可以省略为short。
long只能修饰int和double。修饰为long int(可以省略为long)时,一般表示4个字节,修饰long double时,一般表示10个字节。
unsigned和signed只能修饰char和int。一般情况下,默认的char和int为signed。实型数float和double总是有符号的,不能用unsigned修饰。
bool型(布尔型,也称逻辑型)数据的取值只能是false(假)或true(真)。 bool型数据所占的字节数在不同的编译系统中可能不一样,在VC++6.0编译环境中bool型数据占一字节。
用sizeof(数据类型)可以确定某数据类型的字节长度。例如用下面的语句:
cout <<”size of int is” <<sizeof(int) <<endl;
在16位计算机上将输出:
size Of int is 2
->强类型语言
C++是强类型语言。 强类型语言要求程序设计者在使用数据之前对数据的类型进行声明。例如,在存储一个整数值之前,首先必须告诉计算机要存储的是一个整数类型。使用强类型语言有很多好处,例如,错把一个整数当成一个职工的编号,编译器就会产生错误信息提示。
强类型语言是通过编译器的功能来体现的。一个编译器能检查出的错误越多,我们就说该编译器越好。
在程序设计中,绝大部分的错误是发生在数据类型的误用上,所以现代程序设计语言都要求是强类型语言,因它能够检查出尽可能多的数据类型方面的错误。
例如,如果一个圆半径用浮点数表示, 占用4个字节的内存,而一个整数只占用2个字节的内存。如果要清除一个圆半径,那么就要清除4个字节的内容。如果把一个整数当作一个圆半径来清除, 那么除了清除整数的2个字节外,还清除了其他2个字节的内容,也许额外清除的2个字节中包含有重要的信息,这种错误的清除会造成意想不到的后果。
对于一个初学者来说, 那种对数据类型要求不严格的语言(如:BASIC)更易于入门。但是,它不会像强类型语言那样能够捕获错误,因而最终的程序可能出现更多的错误。
【转】c++各种数据类型所占存储空间大小相关推荐
- C语言数据类型所占空间大小
C语言数据类型所占空间大小 /* * datasize.c -- print the size of common data items * This runs with any Linux kern ...
- 32位系统与64位系统各数据类型所占空间大小
不同系统下各数据类型大小 数据类型 32位字节数 64位字节数 数据值范围 bool(布尔型) 1 1 ture(非0),false(0) char(字符型) 1 1 -128~127 unsigne ...
- C++各种数据类型所占内存大小
文章目录 0. 注意 1.基本数据类型 2. 指针与引用 2.1指针 2.2 引用 3.构造类型 3.1 struct 3.2 union 3.3 enum 3.4 class 0. 注意 基本数据类 ...
- Go语言基础数据类型所占内存大小
基础知识 bit(位):计算机中数据的最小单位,二进制数中的一个数位,0或者1 Byte(字节):计算机中数据的基本单位,每8位(bit)组成一个字节 golang 类型 大小 int8 1字节 in ...
- C语言中各种基本数据类型所占空间大小(32位)
基本数据类型包括以下 char //字符数字类型 1个字节=8个bit位 short //短整型 2个字节 int //整形 4个字节 long//长整型 4/8个字节 long long//更长的整 ...
- mysql数据类型所占空间大小
官方文档:https://dev.mysql.com/doc/refman/8.0/en/storage-requirements.html
- Java基本数据类型及所占字节大小
一.Java基本数据类型 基本数据类型有8种:byte.short.int.long.float.double.boolean.char 分为4类:整数型.浮点型.布尔型.字符型. 整数型:byte. ...
- 什么是字节?字节的大小以及常用数据类型所占的字节
一.什么是字节 字节(Byte )是计算机信息技术用于计量存储容量的一种计量单位,通常情况下一字节等于八位,也表示一些计算机编程语言中的数据类型和语言字符. 二.字节的大小关系 常见的字节类型及大小关 ...
- 信息学奥赛一本通 1018:其他数据类型存储空间大小 | OpenJudge NOI 1.2 03
[题目链接] ybt 1018:其他数据类型存储空间大小 OpenJudge NOI 1.2 03:其他基本数据类型存储空间大小 [题目考点] sizeof运算符 sizeof可以求某常量.变量或类型 ...
最新文章
- 编程上标和下标使用方法
- 高并发编程-通过volatile重新认识CPU缓存 和 Java内存模型(JMM)
- 设计师要懂布局(一)
- 思维脑图——数据分析实战(最新版)
- cmake 构建路径_基于CMake构建系统的MLIR Example扩展
- JDK1.8 LinkedHashMap源码
- 在Windows平台使用IIS部署Flask网站
- python变量后面加星号_易忘易忽略的Python入门知识点-续(一)
- 通过设置关联菜单建立excel记账本
- DirectX11 SDK 例程报错解决方法
- 服务器装win7没有硬盘模式,联想电脑BIOS里硬盘的SATA,AHCI模式里面怎么没有I...-联想p310工作站装win7,联想电脑工作站...
- mysql 如何分组统计个数_mysql 怎样统计分组数
- 天呐?发现一个媲美 “百度” 的程序员网站
- 2015阿里巴巴校招网上笔试
- Hrbust2294修建传送门(尺取法)
- 使用watermark.js给HTML、Word、PPT、Excel等添加水印
- Scala可变长度参数和:_*使用
- 小红书竞品分析_App竞品分析报告:小红书VS洋码头
- (原創) M型化的NB使用族群:談ASUS Eee PC的爆紅對應用程式開發的影響 (OS) (Linux)...
- 数字空间中的二值形态学
热门文章
- mysql密码加强_MySQL密码增强插件
- android float类型保留两位小数_你知道MySQL中Decimal类型和Float Double的区别吗?
- CTF中遇到不知道文件类型_遇到孩子厌学不知道怎么沟通?做好这些策略,孩子肯定爱学...
- java语言的技术可行性_可行性分析的主要内容( )。
- centos 怎样显示metric_centos7系列问题
- 火狐浏览器允许ajax,ajax如何解决火狐浏览器或其它非ie浏览器的兼容性问题
- matlab中sqp的算法原理_利用fmincon函数中的SQP算法求解非线性规划问题,模型本身.......
- MySQL使用Navicat导出Excel时数字展示会变成科学计数法
- vue ---- 组件
- android中自定义 toast,android 自定义Toast样式和显示方式