C++ 数据类型

2023-11-19

        使用编程语言进行编程时,需要用到各种变量来存储各种信息。变量保留的是它所存储的值的内存位置。这意味着,当创建一个变量时,就会在内存中保留一些空间。
        可能需要存储各种数据类型(比如字符型、宽字符型、整型、浮点型、双浮点型、布尔型等)的信息,操作系统会根据变量的数据类型,来分配内存和决定在保留内存中存储什么。

基本的内置类型

        C++ 提供了种类丰富的内置数据类型和用户自定义的数据类型。下表列出了七种基本的 C++ 数据类型:

类型                 关键字
布尔型 bool
字符型 char
整型 int
浮点型 float
双浮点型 double
无类型 void
宽字符型  wchar_t

        一些基本类型可以使用一个或多个类型修饰符进行修饰:

  • signed
  • unsigned
  • short
  • long

        下表显示了各种变量类型在内存中存储值时需要占用的内存,以及该类型的变量所能存储的最大值和最小值.

类型 位宽度 范围
char 1 个字节 -127 到 127 或者 0 到 255
unsigned char 1 个字节 0 到 255
signed char 1 个字节 -127 到 127
int 4 个字节 -2147483648 到 2147483647
unsigned int 4 个字节 0 到 4294967295
signed int 4 个字节 -2147483648 到 2147483647
short int 2 个字节 -32768 到 32767
unsigned short int 2 个字节 0 到 65,535
signed short int 2 个字节 -32768 到 32767
long int 4 个字节 -2,147,483,647 到 2,147,483,647
signed long int 4 个字节 -2,147,483,647 到 2,147,483,647
unsigned long int 4 个字节 0 到 4,294,967,295
float 4 个字节 +/- 3.4e +/- 38 (~7 个数字)
double 8 个字节 +/- 1.7e +/- 308 (~15 个数字)
long double 8 个字节 +/- 1.7e +/- 308 (~15 个数字)
wchar_t 2 或 4 个字节 1 个宽字符

        从上表可得知,变量的大小会根据编译器和所使用的电脑而有所不同。
        下面实例会输出本电脑上各种数据类型的大小。

#include <iostream>
using namespace std;

int main()
{
	cout << "Size of char : " << sizeof(char) << endl;
	cout << "Size of int : " << sizeof(int) << endl;
	cout << "Size of short int : " << sizeof(short int) << endl;
	cout << "Size of long int : " << sizeof(long int) << endl;
	cout << "Size of float : " << sizeof(float) << endl;
	cout << "Size of double : " << sizeof(double) << endl;
	cout << "Size of wchar_t : " << sizeof(wchar_t) << endl;

	return 0;
}

        本实例使用了 endl,这将在每一行后插入一个换行符,<< 运算符用于向屏幕传多个值。使用 sizeof() 函数来获取各种数据类型的大小。
        编译和执行代码,结
果如下(结果会根据所使用的计算机而有所不同):

Size of char : 1
Size of int : 4
Size of short int : 2
Size of long int : 4
Size of float : 4
Size of double : 8
Size of wchar_t : 2

typedef 声明

        可以使用 typedef 为一个已有的类型取一个新的名字。下面是使用 typedef 定义一个新类型的语法:

typedef   type   newname;

        例如,下面的语句会告诉编译器,feet 是 int 的另一个名称:

typedef int feet;

        现在,下面的声明是完全合法的,它创建了一个整型变量 distance:

feet distance;

枚举类型

        枚举类型声明一个可选的类型名称和一组标识符,用来作为该类型的值。其带有零个或多个标识符可以被用来作为该类型的值。每个枚举数是一个枚举类型的常数。
        创建枚举,需要使用关键字 enum。枚举类型的一般形式为:

enum  enum_name{ list of names } var_list;

        在这里,enum_name 是枚举类型的名称。名称列表 { list of names } 是用逗号分隔的。

        例如,下面的代码定义了一个颜色枚举,变量 c 的类型为 color。最后,c 被赋值为 "blue"。

enum color { red, green, blue } c;
c = blue;

        默认情况下,第一个名称的值为 0,第二个名称的值为 1,第三个名称的值为 2,以此类推。但是,也可以给名称赋予一个特殊的值,只需要添加一个初始值即可。例如,在下面的枚举中,green 的值为 5。

enum color { red, green=5, blue };

        在这里,red 的值为0,blue 的值为 6,因为默认情况下,每个名称都会比它前面一个名称大 1。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++ 数据类型 的相关文章

随机推荐

  • 掌握 Android 自动化测试框架 UiAutomator & UiAutomator2

    掌握 Android 自动化测试框架 UiAutomator UiAutomator2 一 UiAutomator 简介 二 UiAutomator2 的诞生 三 UiAutomator2 的应用实践 总结 你是否曾经在进行 Android
  • 基于Matlab萤火虫算法优化订单分批问题

    基于Matlab萤火虫算法优化订单分批问题 订单分批优化问题是在供应链管理中常见的一个重要问题 涉及到如何合理地将一批订单分成若干个批次以最大程度地提高运输效率和降低成本 为了解决这一问题 我们可以借助萤火虫算法 Firefly Algor
  • 多线程环境下使用openssl

    openssl 官网说了 OpenSSL can safely be used in multi threaded applications provided that at least two callback functions are
  • 如何判断代码的好坏

    对于代码好坏的判断 是需要一定的标准来衡量 比如可读性 可维护性 可拓展性 简洁性等等 好的代码 无论是对于代码开发者来说 还是对于设备维护者来说都是赏心悦目的 而坏的代码则是让人一头雾水 心生胆怯 甚至在开发和维护阶段 因为修改或者重构代
  • MATLAB指纹识别系统[GUI,预警]

    一 课题介绍 随着生物识别技术的不断发展 人们发现每个人的指纹具有唯一性和不变性 因此指纹识别技术逐步发展为一种新的身份识别方式 并且凭借其良好的安全可靠性 大有取代传统身份识别方式的趋势 本文简要介绍了指纹识别的基本步骤 分别是指纹图像预
  • scala扁平化

    扁平化 将嵌套列表中的所有元素单独放到一个新列表中 嵌套列表 列表中元素均为列表的列表称之为嵌套列表 object 扁平化 def main args Array String Unit 嵌套列表 val list1 List List 1
  • 字节跳动(今日头条)小程序支付、支付宝、微信支付完整版

    字节跳动 今日头条 小程序支付 开通支付 官方参数组装 小程序代码 服务端 支付宝支付 微信H5支付 支付宝回调 微信H5支付回调 开通支付 开通支付就不做说明了 请直接查看官方文档 https microapp bytedance com
  • Maven pom.xml报错Multiple annotations found at this line: - Missing artifact log4j:log4j:jar:1.2.15:co

    Maven pom xml 报错 Multiple annotationsfound at this line Missing artifactlog4j log4j jar 1 2 15 compile Missing artifacto
  • jsp+Echarts实现图表可视化,连接数据库,从数据库拿数据

    实现可视化的图表 jsp mysql eclipse 从数据库拿数据改变表格的数据算是echarts的初始入门案例的升级版 想了解Echarts的各位大大 传送门 https echarts apache org examples zh e
  • Netty 4.0 实现心跳检测和断线重连

    一 实现心跳检测 原理 当服务端每隔一段时间就会向客户端发送心跳包 客户端收到心跳包后同样也会回一个心跳包给服务端 一般情况下 客户端与服务端在指定时间内没有任何读写请求 就会认为连接是idle 空闲的 的 此时 客户端需要向服务端发送心跳
  • python安装robotframework报错_荐Win10+python3.8+robot framework安装及遇见的问题

    前提 自己已经下载装好了Python3 x 下面是我逐步尝试搜索后出现的各类爆粗信息和截图 现在已经最后正确的方法汇总到文章前面 方便自取 Windows10系统 操作均在cmd命令行窗口内进行 1 装pip python m pip in
  • 【转】protoc-go-inject-tag 作用

    时间 2022 03 01 本文章向大家介绍 转 protoc go inject tag 作用 主要包括 转 protoc go inject tag 作用使用实例 应用技巧 基本知识点总结和需要注意事项 具有一定的参考价值 需要的朋友可
  • window10在vscode中配置conda出错解决办法

    Windows 10 VSCode激活conda虚拟环境失败解决方案 CommandNotFoundError Your shell has not been 码农家园
  • VS 2022使用报错(一)

    1 NET框架不兼容 发生背景 博主最近打开同事的源代码发现许多引用都无效了 中间我尝试删除了这些引用 在重新添加引用的时候都找不到这些了 最后发现是解决方案里面没有配置 NET框架 问题解决 配置 NET框架 右键项目属性 在目标框架里面
  • python搭建ip池(多线程)

    之前有讲过怎么搭建ip池 但由于单线程的效率太低 于是我们升级改造一下 将单线程变成多线程来搭建ip池 之前的方法可以参考一下 python搭建ip池 如果会简单的request和提取文字就可以直接不看 本文将会重点放在多线程的部分 过程分
  • 微软个人云端服务器在哪里找,云端的服务器在哪里

    云端的服务器在哪里 内容精选 换一换 智能边缘平台 Intelligent EdgeFabric 通过纳管用户的边缘节点 提供将云上应用延伸到边缘的能力 联动边缘和云端的数据 同时 在云端提供统一的边缘节点 应用监控 日志采集等运维能力 为
  • python基础:面向对象一些简单案例:计算圆的面积和周长,烤羊肉串

    1 计算圆的面积和周长 from math import pi class Circle def init self r self r r def zhouchang self return 2 pi self r def area sel
  • shell编程计算1-1000中所有3或5的倍数之和

    bin bash sum 0 int 1 while int lt 1000 do if int 3 0 int 5 0 then sum sum int fi let int done echo sum bin bash sum 0 fo
  • Spring Security 自定义用户认证

    一 PasswordEncoder 在 Configuration注解的类下注入bean import org springframework security crypto bcrypt BCryptPasswordEncoder imp
  • C++ 数据类型

    使用编程语言进行编程时 需要用到各种变量来存储各种信息 变量保留的是它所存储的值的内存位置 这意味着 当创建一个变量时 就会在内存中保留一些空间 可能需要存储各种数据类型 比如字符型 宽字符型 整型 浮点型 双浮点型 布尔型等 的信息 操作