【C++基础】3. 数据类型

news2024/9/9 4:40:54

文章目录

  • 【 1. 数据类型分类 】
    • 1.1 字符型
    • 1.2 整型
    • 1.3 浮点型
    • 1.4 布尔型
    • 1.5 无类型
    • 1.6 枚举类型
    • 1.7 其他类型
    • 1.8 类型占用大小输出
  • 【 2. typedef 类型声明 】

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

【 1. 数据类型分类 】

  • 变量的大小会根据编译器和所使用的电脑而有所不同。
  • C++ 允许在 char、int 和 double 数据类型前放置 大小修饰符。修饰符用于改变基本类型的含义,所以它更能满足各种情境的需求。修饰符 signed、unsigned、long 和 short 可应用于整型,signed 和 unsigned 可应用于字符型,long 可应用于双精度型。
  • 修饰符 signed 和 unsigned 也可以作为 long 或 short 修饰符的前缀。例如:unsigned long int。
  • C++默认是 有符号的 。例如 signed int a; 和 int a; 是一样的。
#include <iostream>
using namespace std;

/* 
 * 这个程序演示了有符号整数和无符号整数之间的差别
*/
int main()
{
   short int i;           // 有符号短整数
   short unsigned int j;  // 无符号短整数

   j = 50000;

   i = j;
   cout << i << " " << j;

   return 0;
}

在这里插入图片描述

1.1 字符型

  • 字符类型,用于存储 ASCII 字符。
  • wchar_t 的来源:typedef short int wchar_t;故wchar_t 实际上的空间是和 short int 一样。
名称关键字范围
字符型char1 个字节-128 ~ 127 或者 0 ~ 255
无符号字符型unsigned char1 个字节0 ~ 255
有符号字符型signed charint-128 ~ 127
宽字符型wchar_t2 或 4 个字节1 个宽字符

1.2 整型

  • 整数类型,通常用于存储普通整数。
名称关键字范围
整型int4 个字节-2147483648 ~ 2147483647
有符号整型signed int4 个字节-2147483648 ~ 2147483647
无符号整型unsigned int4 个字节0 ~ 4294967295
短整型short int2 个字节-32768 ~ 32767
有符号短整型signed short int2 个字节-32768 ~ 32767
无符号短整型unsigned short int2 个字节0 ~ 65,535
长整型long int8 个字节-9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807
有符号长整型signed long int8 个字节-9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807
无符号长整型unsigned long int8 个字节0 ~ 18,446,744,073,709,551,615

1.3 浮点型

  • 单精度浮点型:用于存储单精度浮点数。单精度是这样的格式,1 位符号,8 位指数,23 位小数,通常占用4个字节。
  • 双精度浮点型:用于存储双精度浮点数。双精度是 1 位符号,11 位指数,52 位小数,通常占用 8 个字节。
名称关键字范围
单精度浮点型float4 个字节+/- 3.4e +/- 38 (~7 个数字)
双精度浮点型double8 个字节+/- 1.7e +/- 308 (~15 个数字)
多精度浮点型long double16 个字节+/- 1.7e +/- 308 (~15 个数字)

1.4 布尔型

名称关键字范围
布尔型bool1个字节存储值 true 或 false,即 1或 0

1.5 无类型

名称关键字范围
无类型void\\

1.6 枚举类型

  • 枚举类型(enumeration)是C++中的一种派生数据类型,它是由用户定义的若干枚举常量的集合。
  • 如果一个变量只有几种可能的值,可以定义为枚举(enumeration)类型。所谓"枚举"是指将变量的值一 一列举出来,变量的值只能在列举出来的值的范围内。
  • 创建枚举,需要使用关键字 enum。枚举类型的一般形式为:
enum 枚举名
{ 
     标识符[=整型常数], 
     标识符[=整型常数], 
... 
    标识符[=整型常数]
} 枚举变量;
  • 如果枚举没有初始化, 即省掉"=整型常数"时, 则从第一个标识符开始。
//下面的代码定义了一个颜色枚举,变量 c 的类型为 color。最后,c 被赋值为 "blue"。
enum color { red, green, blue } c;
c = blue;
  • 默认情况下,第一个名称的值为 0,第二个名称的值为 1,第三个名称的值为 2,以此类推。但是,也可以给名称赋予一个特殊的值,只需要添加一个初始值即可。例如,在下面的枚举中,green 的值为 5,blue 的值为 6,因为 默认情况下,每个名称都会比它前面一个名称大 1,但 red 的值依然为 0。
enum color { red, green=5, blue };

1.7 其他类型

  • 如结构体、等等

1.8 类型占用大小输出

//输出电脑上各种数据类型的大小。
#include<iostream>  
#include<string>  
#include <limits>  
using namespace std;  

int main()  
{  
    cout << "type: \t\t" << "************size**************"<< endl;  
    cout << "bool: \t\t" << "所占字节数:" << sizeof(bool);  
    cout << "\t最大值:" << (numeric_limits<bool>::max)();  
    cout << "\t\t最小值:" << (numeric_limits<bool>::min)() << endl;  
    cout << "char: \t\t" << "所占字节数:" << sizeof(char);  
    cout << "\t最大值:" << (numeric_limits<char>::max)();  
    cout << "\t\t最小值:" << (numeric_limits<char>::min)() << endl;  
    cout << "signed char: \t" << "所占字节数:" << sizeof(signed char);  
    cout << "\t最大值:" << (numeric_limits<signed char>::max)();  
    cout << "\t\t最小值:" << (numeric_limits<signed char>::min)() << endl;  
    cout << "unsigned char: \t" << "所占字节数:" << sizeof(unsigned char);  
    cout << "\t最大值:" << (numeric_limits<unsigned char>::max)();  
    cout << "\t\t最小值:" << (numeric_limits<unsigned char>::min)() << endl;  
    cout << "wchar_t: \t" << "所占字节数:" << sizeof(wchar_t);  
    cout << "\t最大值:" << (numeric_limits<wchar_t>::max)();  
    cout << "\t\t最小值:" << (numeric_limits<wchar_t>::min)() << endl;  
    cout << "short: \t\t" << "所占字节数:" << sizeof(short);  
    cout << "\t最大值:" << (numeric_limits<short>::max)();  
    cout << "\t\t最小值:" << (numeric_limits<short>::min)() << endl;  
    cout << "int: \t\t" << "所占字节数:" << sizeof(int);  
    cout << "\t最大值:" << (numeric_limits<int>::max)();  
    cout << "\t最小值:" << (numeric_limits<int>::min)() << endl;  
    cout << "unsigned: \t" << "所占字节数:" << sizeof(unsigned);  
    cout << "\t最大值:" << (numeric_limits<unsigned>::max)();  
    cout << "\t最小值:" << (numeric_limits<unsigned>::min)() << endl;  
    cout << "long: \t\t" << "所占字节数:" << sizeof(long);  
    cout << "\t最大值:" << (numeric_limits<long>::max)();  
    cout << "\t最小值:" << (numeric_limits<long>::min)() << endl;  
    cout << "unsigned long: \t" << "所占字节数:" << sizeof(unsigned long);  
    cout << "\t最大值:" << (numeric_limits<unsigned long>::max)();  
    cout << "\t最小值:" << (numeric_limits<unsigned long>::min)() << endl;  
    cout << "double: \t" << "所占字节数:" << sizeof(double);  
    cout << "\t最大值:" << (numeric_limits<double>::max)();  
    cout << "\t最小值:" << (numeric_limits<double>::min)() << endl;  
    cout << "long double: \t" << "所占字节数:" << sizeof(long double);  
    cout << "\t最大值:" << (numeric_limits<long double>::max)();  
    cout << "\t最小值:" << (numeric_limits<long double>::min)() << endl;  
    cout << "float: \t\t" << "所占字节数:" << sizeof(float);  
    cout << "\t最大值:" << (numeric_limits<float>::max)();  
    cout << "\t最小值:" << (numeric_limits<float>::min)() << endl;  
    cout << "size_t: \t" << "所占字节数:" << sizeof(size_t);  
    cout << "\t最大值:" << (numeric_limits<size_t>::max)();  
    cout << "\t最小值:" << (numeric_limits<size_t>::min)() << endl;  
    cout << "string: \t" << "所占字节数:" << sizeof(string) << endl;  
    // << "\t最大值:" << (numeric_limits<string>::max)() << "\t最小值:" << (numeric_limits<string>::min)() << endl;  
    cout << "type: \t\t" << "************size**************"<< endl;  
    return 0;  
}

【 2. typedef 类型声明 】

  • 可以使用 typedef 为一个已有的类型取一个新的名字。
// 下面的语句会告诉编译器,feet 是 int 的另一个名称。
typedef int feet;

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/988865.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

iOS创建Category类别(扩展类)

我要为UIButton扩展其他系统提供以外的方法&#xff0c;这就要用到扩展类了 创建步骤如下图&#xff1a; 步骤一&#xff1a;New File 步骤二&#xff1a;选中Objective-c File 步骤三&#xff1a;File名称随便起(这里写了AaaBtn)&#xff0c;继承Class为UIButton 步骤四&…

4. xaml Button按钮

1.运行图片 2.源码 <Grid><!--BorderBrush="BlueViolet" 边框颜色--><!--BorderThickness="2" 边框线的粗细--><

软件测试适合零基础学么

零基础学习软件测试不失为一个好的选择&#xff0c;虽然IT行业里对小白最友好的非软件测试莫属了&#xff0c;但是也要看你个人在学习软件测试这件事上面花费了多少的时间和努力了~ 每年毕业季&#xff0c;IT行业依然是比较热门且收入是最高的行业。对于应届毕业生来说想要进入…

【python自动化】七月PytestAutoApi开源框架学习笔记(二)

执行流程 注&#xff1a;请先阅读作者的README.md文档https://gitee.com/yu_xiao_qi/pytest-auto-api2/blob/master/README.md 本节内容目录如下&#xff1a; 文章目录 执行流程目录结构参数配置入口文件-run.pypytest.ini test_case初始化数据缓存解析yaml测试数据 测试用例…

学习Bootstrap 5的第八天

目录 加载器 彩色加载器 实例 闪烁加载器 实例 加载器大小 实例 加载器按钮 实例 分页 分页的基本结构 实例 活动状态 实例 禁用状态 实例 分页大小 实例 分页对齐 实例 面包屑&#xff08;Breadcrumbs&#xff09; 实例 加载器 彩色加载器 在 Bootstr…

微信个人号如何实现自动回复,秒回客户消息?

企业在开展私域运营沉淀用户的过程中&#xff0c;免不了要与来自各个渠道的用户打交道。在客户关注公众号、视频号或者发送QQ消息后&#xff0c;通过设置欢迎语&#xff0c;主动推送内容。 那么微信是不是也可以通过设置像它们一样可以自动欢迎语呢&#xff1f; 其实是可以的。…

谷歌为什么不收录你的网站?

答案是&#xff1a;因为你的文章质量太差&#xff0c;建议使用GPC爬虫池促收录。 谷歌作为全球最大的搜索引擎&#xff0c;对于许多网站主、营销人员和SEO专家来说&#xff0c;确保自己的网站被谷歌收录是至关重要的。 但有时&#xff0c;即使我们做了很多努力&#xff0c;我…

Mybatis中 collection 和 association 标签 的区别

<collection> 和 <association> 是 MyBatis 中用于定义映射关系的标签&#xff0c;它们的区别如下&#xff1a; 目标对象类型&#xff1a; <collection> 用于表示集合属性&#xff0c;即一个属性对应多个关联对象。<association> 用于表示关联属性&…

深入了解vue2没有在data中定义的属性非响应式的问题

关于vue2没有在data中定义的属性非响应式的问题 vue2 响应式的原理及实现vue2 解决此类的部分 vue2 响应式的原理及实现 vue2 响应式数据 是通过 es5 中的 Object.defineProperty 方法来实现&#xff0c;把 data 定义的所有属性&#xff0c;转换为 get/set 方法&#xff0c;使…

java应用CPU飙高的排查思路及解决方案

1、使用top命令查看系统cpu占用情况&#xff0c;找出占用最高的进程pid top 2、使用如下命令查找进程内占用cpu最高的线程id ps H -eo pid,tid,%cpu | grep 最高的进程pid查询出进程内2276这个线程占用cpu最高 # pid&#xff08;进程id&#xff09;、tid&#xff08;线程id&…

移动和pc端的微信支付和支付宝支付(持续更新)

最近开发了一个web商城,需要支持pc端,手机端,且需要支持微信支付和支付宝支付。 pc端,pc端用户点击支付,直接用弹窗弹出一个支付二维码即可手机端的支付宝支付,现在自己尝试了下微信内打开一个支付宝支付链接,发现是可以打开,如图: 问了一下,说是工信部反垄断的政策,…

【设计模式】组合模式实现部门树实践

1.前言 几乎在每一个系统的开发过程中&#xff0c;都会遇到一些树状结构的开发需求&#xff0c;例如&#xff1a;组织机构树&#xff0c;部门树&#xff0c;菜单树等。只要是需要开发这种树状结构的需求&#xff0c;我们都可以使用组合模式来完成。 本篇将结合组合模式与Mysq…

激光切割机在船舶行业的的应用有哪些

我国享有世界工厂的美誉&#xff0c;是全球制造业的主力。然而&#xff0c;在船舶制造的关键技术领域&#xff0c;我国的研发投入不足&#xff0c;技术进步仍滞后&#xff0c;我国高端船舶制造的实力仍显不足。 在我国制造业全面复苏的当前背景下&#xff0c;“精准制作”正构成…

苹果上架app备案流程介绍

摘要&#xff1a;本文将为iOS技术博主介绍苹果上架App备案流程的详细步骤&#xff0c;包括注册开发者账号、创建App ID、创建证书、创建Provisioning Profile、开发应用程序、提交应用程序、审核和上架。了解这一流程对于想要将应用程序上架到App Store供用户下载使用的博主来说…

靶场溯源第二题

关卡描述&#xff1a;1. 网站后台登陆地址是多少&#xff1f;&#xff08;相对路径&#xff09; 首先这种确定的网站访问的都是http或者https协议&#xff0c;搜索http看看。关于http的就这两个信息&#xff0c;然后172.16.60.199出现最多&#xff0c;先过滤这个ip看看 这个很…

FAT32文件系统f_mkfs函数详解

1.f_mkfs参数 参数path&#xff1a;要挂载/卸载的逻辑驱动器号;使用设备根路径表示。 参数opt&#xff1a;系统的格式&#xff0c;如图所示&#xff0c;选择FM_FAT32即可&#xff0c;选择其他的可能无法格式化。 参数au&#xff1a;每簇的字节数&#xff0c;以字节为单位&#…

无涯教程-JavaScript - IMDIV函数

描述 IMDIV函数以x yi或x yj文本格式返回两个复数的商。 $$IMDIV(z1,z2) \frac {(a bi)} {(c in)} \frac {{ac bd)(bc-ad)i} {c ^ 2 d ^ 2 } $$ 语法 IMDIV (inumber1, inumber2)争论 Argument描述Required/OptionalInumber1The complex numerator or dividend.Req…

异步编程 - 11 Spring WebFlux的异步非阻塞处理

文章目录 概述Spring WebFlux概述Reactive编程&Reactor库WebFlux服务器WebFlux的并发模型WebFlux对性能的影响WebFlux的编程模型WebFlux注解式编程模型WebFlux函数式编程模型 WebFlux原理浅尝Reactor Netty概述WebFlux服务器启动流程WebFlux一次服务调用流程 WebFlux的适用…

使用gradle打包springboot项目

这边整理下自己项目使用gradle打jar包的坎坷经历&#xff0c;使用的方式是命令行的方式 首先配置build.gradle跟我一样 plugins {id javaid org.springframework.boot version 3.1.3id io.spring.dependency-management version 1.1.3 }//用于添加Java插件,以及一些内置任务&a…

springboot+redis

1.pom.xml <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency> 2.yml配置 # redis 配置redis:host: 127.0.0.1#超时连接timeout: 1000msjedis:pool:#最大连…