一个程序要运行,就要先描述其算法。描述一个算法应先说明算法中要用的数据,数据以变量或常量的形式来描述。每个变量或常量都有数据类型。
  变量是存储信息的单元,它对应于某个内存空间。用变量名代表其存储空间。程序能在变量中存储值和取出值。
  在定义变量时,说明的变量名字和数据类型(如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++各种数据类型所占存储空间大小相关推荐

  1. C语言数据类型所占空间大小

    C语言数据类型所占空间大小 /* * datasize.c -- print the size of common data items * This runs with any Linux kern ...

  2. 32位系统与64位系统各数据类型所占空间大小

    不同系统下各数据类型大小 数据类型 32位字节数 64位字节数 数据值范围 bool(布尔型) 1 1 ture(非0),false(0) char(字符型) 1 1 -128~127 unsigne ...

  3. C++各种数据类型所占内存大小

    文章目录 0. 注意 1.基本数据类型 2. 指针与引用 2.1指针 2.2 引用 3.构造类型 3.1 struct 3.2 union 3.3 enum 3.4 class 0. 注意 基本数据类 ...

  4. Go语言基础数据类型所占内存大小

    基础知识 bit(位):计算机中数据的最小单位,二进制数中的一个数位,0或者1 Byte(字节):计算机中数据的基本单位,每8位(bit)组成一个字节 golang 类型 大小 int8 1字节 in ...

  5. C语言中各种基本数据类型所占空间大小(32位)

    基本数据类型包括以下 char //字符数字类型 1个字节=8个bit位 short //短整型 2个字节 int //整形 4个字节 long//长整型 4/8个字节 long long//更长的整 ...

  6. mysql数据类型所占空间大小

    官方文档:https://dev.mysql.com/doc/refman/8.0/en/storage-requirements.html

  7. Java基本数据类型及所占字节大小

    一.Java基本数据类型 基本数据类型有8种:byte.short.int.long.float.double.boolean.char 分为4类:整数型.浮点型.布尔型.字符型. 整数型:byte. ...

  8. 什么是字节?字节的大小以及常用数据类型所占的字节

    一.什么是字节 字节(Byte )是计算机信息技术用于计量存储容量的一种计量单位,通常情况下一字节等于八位,也表示一些计算机编程语言中的数据类型和语言字符. 二.字节的大小关系 常见的字节类型及大小关 ...

  9. 信息学奥赛一本通 1018:其他数据类型存储空间大小 | OpenJudge NOI 1.2 03

    [题目链接] ybt 1018:其他数据类型存储空间大小 OpenJudge NOI 1.2 03:其他基本数据类型存储空间大小 [题目考点] sizeof运算符 sizeof可以求某常量.变量或类型 ...

最新文章

  1. 编程上标和下标使用方法
  2. 高并发编程-通过volatile重新认识CPU缓存 和 Java内存模型(JMM)
  3. 设计师要懂布局(一)
  4. 思维脑图——数据分析实战(最新版)
  5. cmake 构建路径_基于CMake构建系统的MLIR Example扩展
  6. JDK1.8 LinkedHashMap源码
  7. 在Windows平台使用IIS部署Flask网站
  8. python变量后面加星号_易忘易忽略的Python入门知识点-续(一)
  9. 通过设置关联菜单建立excel记账本
  10. DirectX11 SDK 例程报错解决方法
  11. 服务器装win7没有硬盘模式,联想电脑BIOS里硬盘的SATA,AHCI模式里面怎么没有I...-联想p310工作站装win7,联想电脑工作站...
  12. mysql 如何分组统计个数_mysql 怎样统计分组数
  13. 天呐?发现一个媲美 “百度” 的程序员网站
  14. 2015阿里巴巴校招网上笔试
  15. Hrbust2294修建传送门(尺取法)
  16. 使用watermark.js给HTML、Word、PPT、Excel等添加水印
  17. Scala可变长度参数和:_*使用
  18. 小红书竞品分析_App竞品分析报告:小红书VS洋码头
  19. (原創) M型化的NB使用族群:談ASUS Eee PC的爆紅對應用程式開發的影響 (OS) (Linux)...
  20. 数字空间中的二值形态学

热门文章

  1. mysql密码加强_MySQL密码增强插件
  2. android float类型保留两位小数_你知道MySQL中Decimal类型和Float Double的区别吗?
  3. CTF中遇到不知道文件类型_遇到孩子厌学不知道怎么沟通?做好这些策略,孩子肯定爱学...
  4. java语言的技术可行性_可行性分析的主要内容( )。
  5. centos 怎样显示metric_centos7系列问题
  6. 火狐浏览器允许ajax,ajax如何解决火狐浏览器或其它非ie浏览器的兼容性问题
  7. matlab中sqp的算法原理_利用fmincon函数中的SQP算法求解非线性规划问题,模型本身.......
  8. MySQL使用Navicat导出Excel时数字展示会变成科学计数法
  9. vue ---- 组件
  10. android中自定义 toast,android 自定义Toast样式和显示方式