No.3十六届蓝桥杯备战|数据类型长度|sizeof|typedef|练习(C++)

news2025/1/3 3:04:26

数据类型⻓度

每⼀种数据类型都有⾃⼰的⻓度,使⽤不同的数据类型,能够创建出⻓度不同的变量,变量⻓度的不同,存储的数据范围就有所差异。

sizeof操作符

sizeof 是⼀个关键字,也是操作符,专⻔是⽤来计算特定数据类型的⻓度的,单位是字节。
sizeof 操作符的操作数可以是类型,也可是变量名或者表达式, sizeof 的操作数如果不是类型,是表达式的时候,可以省略掉后边的括号的。

sizeof (类型)  
sizeof 表达式

sizeof 的计算结果是 size_t 类型的, size_t 指的是⽆符号整数(该类型包含了所有可能的unsigned int , unsigned long , unsigned long long 等类型,具体是取决于编译器的)。

#include <iostream>
using namespace std;

int main()
{
	int a = 100;

	cout << sizeof (a) << endl;
	cout << sizeof a << endl;
	cout << sizeof (int) << endl;

	return 0;
}
各数据类型⻓度
#include <iostream>  
using namespace std;  

int main()  
{  
	cout << sizeof(char) << endl;  
	cout << sizeof(bool) << endl;  
	cout << sizeof(short) << endl;  
	cout << sizeof(int) << endl;  
	cout << sizeof(long) << endl;  
	cout << sizeof(long long) << endl;  
	cout << sizeof(float) << endl;  
	cout << sizeof(double) << endl;  
	cout << sizeof(long double) << endl;  
	
	return 0;  
}

![[Pasted image 20241230135259.png]]

C/C++标准规定,sizeof(long) >= sizeof(int)
根据编译器的不同,sizeof(long)可以是4也可以是8

使⽤这些数据类型可以向内存申请空间(就是创建变量),不同的数据类型⼀次性申请的空间⼤⼩是有差异的。
![[Pasted image 20241230135645.png]]

各类型取值范围

不同的数据类型所创建的变量的⻓度是有差异的,这个⻓度差异⼜决定了,这种变量中能存储的值的⼤⼩。
其实每⼀种数据类型有⾃⼰的取值范围,也就是存储的数值的最⼤值和最⼩值的区间,有了丰富的类型,我们就可以在适当的场景下去选择适合的类型。

类型取值范围速记最小值速记最大值
char-128~127CHAR_MIN -2^7CHAR_MAX 2^7-1
unsigned char0~2550UCHAR_MAX 2^8-1
short-32878~32767SHRT_MIN -2^15SHRT_MAX 2^15-1
unsigned short0~655350SHRT_MAX 2^16-1
int-2147483648~2147483647INT_MIN -2^31INT_MAX 2^31-1
unsigned int0~42949672950UINT_MAX 2^32-1
long-2147483648~2147483647LONG_MIN -2^31LONG_MAX 2^31-1
unsigned long0~42949672950ULONG_MAX 2^32-
long long-9223372036854775808~9223372036854775807LLONG_MIN -2^63LLONG_MAX 2^63-1
unsigned long long0~184467440737095516150ULLONG_MAX 2^64-1
为了代码的可移植性,和⽅便记忆,需要知道某种整数类型的极限值时,经常使⽤这些速记的符号。
limits.h ⽂件中说明了整型类型的取值范围。(C++中头⽂件的名字是 <climits>
float.h 这个头⽂件中说明浮点型类型的取值范围。(C++中头⽂件的名字是 <cfloat>
int 类型取值⼤概就是:-2.1*109~2.1*109,这⾥就是10^9这样的数量级。

typedef

在C++中有⼀个关键字是和类型有关的,是⽤来给类型重命名的。当有⼀个类型⽐较复杂的时候,可以简化类型。 typedef在竞赛中经常使⽤,可以提升编码速度。typedef使⽤的基本语法形式:

typedef 旧类型名 新类型名;

EG:

typedef unsigned int uint;  
typedef long long ll;  
typedef unsigned long long ull;

上⾯代码的意思是将 unsigned int 类型重命名为 uint ,使⽤ uint 创建的变量和使⽤unsigned int 是⼀样的,其他⼏个也是⼀样的道理。

uint num1 = 0;  // 等价于 unsigned int num1 = 0;  
ll num2 = 0;    // 等价于 long long num2 = 0;  
ull num3 = 0;   // 等价于 unsigned long long num3 = 0;

练习

整数
#include <iostream>  
using namespace std;  

int main()  
{  
	int a;  
	
	cin >> a;  
	cout << a;  
	
	return 0;  
}
B2018 打印字符 - 洛谷
#include <iostream>  
using namespace std;  

int main()  
{  
	int n = 0;  
	cin >> n;  
	char ch = n;  
	cout << ch << endl;  
	
	return 0;  
}
#include <iostream>  
using namespace std;  

int main()  
{  
	char ch = n;  
	cin >> ch;
	cout << ch << endl;  
	
	return 0;  
}

这种会出问题,比如输入65,因为变量是char类型的,cin会把6作为一个符号输入进去,最后只会打印一个6

“⼀个整数,即字符的ASCII码”,那么就必须使⽤⼀个int类型的变量来输⼊数值。因为C++的 cin 是根据变量的类型在缓冲区读取数据的。换成 char 类型是不⾏的,虽然 char 类型的变量也是能存储这个ASCII值的。

倒序
#include <iostream>
using namespace std;

int main()
{
    int a, b, c;
    cin >> a >> b >> c;
    cout << c << ' ' << b << ' ' << a << endl;
    
    return 0;
}

取值范围是0~2^31 -1,用int类型就可以
这里使用单引号字符空格或双引号字符串空格都可以

整型数据类型存储空间大小
#include <iostream>  
using namespace std;  

int main()  
{  
	int n = 0;  
	short s = 0;  
	
	cout << sizeof(n) << " " << sizeof(s) << endl;  
	
	return 0;  
}

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

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

相关文章

大数据组件(一)快速入门调度组件Airflow

大数据组件(一)快速入门调度组件Airflow DolphinScheduler和 Airflow是数据领域很流行的两款开源任务调度系统。DolphinScheduler 致力于用可视化的方式去完成一个 DAG 工作流&#xff0c;而 Airflow 则想的是用类似于编程的方式完成一个 DAG 工作流。 Apache DolphinSchedule…

jpeg学习

相关最全的一篇文章链接&#xff1a;https://www.cnblogs.com/wtysos11/p/14089482.html YUV基础知识 Y表示亮度分量&#xff1a;如果只显示Y的话&#xff0c;图像看起来会是一张黑白照。 U&#xff08;Cb&#xff09;表示色度分量&#xff1a;是照片蓝色部分去掉亮度&#x…

内部类(3)

大家好&#xff0c;今天我们继续来看看内部类&#xff0c;今天我们来学习一下内部类的分类&#xff0c;我们来看看一共有几种&#xff0c;它们有什么作用&#xff0c;那么话不多说&#xff0c;我们直接开始。 9.1 内部类的分类 先来看下,内部类都可以在一个类的哪些位置进行定…

你还在用rand()生成随机数?

1. rand() 的缺陷 伪随机数生成器使用数学算法来产生具有良好统计特性的数字序列&#xff0c;但这些数字并非真正随机。 C 标准库中的 rand() 函数并不保证所生成的随机序列的质量。某些 rand() 实现生成的数字周期较短&#xff0c;且这些数字是可以预测的。对于有强伪随机数…

基于FPGA的2ASK+帧同步系统verilog开发,包含testbench,高斯信道,误码统计,可设置SNR

目录 1.算法仿真效果 2.算法涉及理论知识概要 2.1 2ASK调制解调 2.2 帧同步 3.Verilog核心程序 4.完整算法代码文件获得 1.算法仿真效果 vivado2019.2仿真结果如下&#xff08;完整代码运行后无水印&#xff09;&#xff1a; 设置SNR8db 设置SNR20db 整体波形效果&…

RT-Thread中堆和栈怎么跟单片机内存相联系

现在RT-ThreadMCU的应用方式越来越普遍&#xff0c;RT-Thread需要配置MCU中的RAM到的系统中&#xff0c;进入系统内存管理&#xff0c;才能提供给基于实时系统的应用程序使用&#xff0c;比如给应用程序提供malloc、free等函数调用功能。在嵌入式软件开发中&#xff0c;我们经常…

2、Bert论文笔记

Bert论文 1、解决的问题2、预训练微调2.1预训练微调概念2.2深度双向2.3基于特征和微调&#xff08;预训练下游策略&#xff09; 3、模型架构4、输入/输出1.输入&#xff1a;2.输出&#xff1a;3.Learned Embeddings(学习嵌入)1. **Token Embedding**2. **Position Embedding**3…

TiDB 的MPP架构概述

MPP架构介绍&#xff1a; 如图&#xff0c;TiDB Server 作为协调者&#xff0c;首先 TiDB Server 会把每个TiFlash 拥有的region 会在TiFlash上做交换&#xff0c;让表连接在一个TiFlash上。另外 TiFlash会作为计算节点&#xff0c;每个TiFlash都负责数据交换&#xff0c;表连接…

3、redis的高可用

主从复制 主从复制&#xff1a;这是redis高可用的基础。哨兵模式和集群都是建立在此基础之上。 主从模式和数据库的主从模式是一样的&#xff0c;主负责写入&#xff0c;然后把写入的数据同步到从&#xff0c;从节点只能读不能写。read only。 不能做高可用的切换&#xff…

【架构-38】如何选择通信协议和数据格式

一、通信协议选择 不同的协议适用于不同的应用场景&#xff0c;关键在于数据传输的需求&#xff0c;如&#xff1a;实时性、带宽、可靠性等。下面是几种常见通信协议的适用场景&#xff1a; WebSocket 适用场景&#xff1a;实时、双向数据传输、低延迟、持久连接 特点&#x…

SpringCloudAlibaba 技术栈—Sentinel

1、什么是sentinel? Sentinel是一个用于微服务架构的流量管理和控制系统&#xff0c;它通过限制和控制进入系统的流量&#xff0c;来保护系统免受过载和故障的影响&#xff0c;确保服务的稳定性。简而言之&#xff0c;它就是一个帮助微服务在高负载情况下也能稳定运行的工具。…

初学STM32 ---高级定时器互补输出带死区控制

互补输出&#xff0c;还带死区控制&#xff0c;什么意思&#xff1f; 带死区控制的互补输出应用之H桥 捕获/比较通道的输出部分&#xff08;通道1至3&#xff09; 死区时间计算 举个栗子&#xff08;F1为例&#xff09;&#xff1a;DTG[7:0]250&#xff0c;250即二进制&#x…

RoboMIND:多体现基准 机器人操纵的智能规范数据

我们介绍了 RoboMIND&#xff0c;这是机器人操纵的多体现智能规范数据的基准&#xff0c;包括 4 个实施例、279 个不同任务和 61 个不同对象类别的 55k 真实世界演示轨迹。 工业机器人企业 埃斯顿自动化 | 埃夫特机器人 | 节卡机器人 | 珞石机器人 | 法奥机器人 | 非夕科技 | C…

Hadoop HA安装配置(容器环境),大数据职业技能竞赛模块A平台搭建,jdk+zookeeper+hadoop HA

HA概述 &#xff08;1&#xff09; 所谓HA&#xff08;High Availablity&#xff09;,即高可用&#xff08;7*24小时不中断服务&#xff09;。 &#xff08;2&#xff09; 实现高可用最关键的策略是消除单点故障&#xff0c;HA严格来说应该分为各个组件的HA机制&#xff0c;H…

国产文本编辑器EverEdit - 如何让输出窗口的日志具有双击跳转到文件指定行的功能

1 开发参考&#xff1a;编写脚本时如何向输出窗口打印可跳转到文件位置的日志 1.1 应用场景 编写脚本时&#xff0c;有时对文本进行分析&#xff0c;需要将提示信息打印到输出窗口&#xff0c;同时希望将文本的行、列信息也打印在日志中&#xff0c; 最好是双击日志信息可以跳…

《云原生安全攻防》-- K8s安全配置:CIS安全基准与kube-bench工具

在本节课程中&#xff0c;我们来了解一下K8s集群的安全配置&#xff0c;通过对CIS安全基准和kube-bench工具的介绍&#xff0c;可以快速发现K8s集群中不符合最佳实践的配置项&#xff0c;及时进行修复&#xff0c;从而来提高集群的安全性。 在这个课程中&#xff0c;我们将学习…

3、redis的集群模式

主从模式 哨兵模式 集群 主从模式&#xff1a;这是redis高可用的基础&#xff0c;哨兵模式和集群都是建立在此基础之上。 主从模式和数据库的主从模式是一样的&#xff0c;主负责写入&#xff0c;然后把写入的数据同步到从&#xff0c; 从节点只能读不能写&#xff0c;rea…

计算机图形学知识点汇总

一、计算机图形学定义与内容 1.图形 图形分为“图”和“形”两部分。 其中&#xff0c;“形”指形体或形状&#xff0c;存在于客观世界和虚拟世界&#xff0c;它的本质是“表示”&#xff1b;而图则是包含几何信息与属性信息的点、线等基本图元构成的画面&#xff0c;用于表达…

自动化测试模型(一)

8.8.1 自动化测试模型概述 在自动化测试运用于测试工作的过程中&#xff0c;测试人员根据不同自动化测试工具、测试框架等所进行的测试活动进行了抽象&#xff0c;总结出线性测试、模块化驱动测试、数据驱动测试和关键字驱动测试这4种自动化测试模型。 线性测试 首先&#…

医疗数仓数据仓库设计

医疗数仓数据仓库设计 数据仓库构建流程数据调研明确数据域构建业务总线矩阵明确统计指标交易主题医生主题用户主题评价主题 维度模型设计汇总模型设计 数据仓库构建流程 数据仓库分层规划 优秀可靠的数仓体系&#xff0c;需要良好的数据分层结构。合理的分层&#xff0c;能够…