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

server/2025/1/9 12:28:46/

数据类型⻓度

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

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.ppmy.cn/server/155713.html

相关文章

ThinkPHP 模板引擎使用技巧:提高开发效率

ThinkPHP 模板引擎使用技巧&#xff1a;提高开发效率 在现代 Web 开发中&#xff0c;模板引擎是实现前后端分离、提高开发效率的重要工具。ThinkPHP 的模板引擎提供了灵活且高效的方式来渲染视图&#xff0c;本文将介绍一些实用的使用技巧&#xff0c;帮助开发者更好地利用 Th…

Redission看门狗实现redis定期续期原理

文章目录 前言前言问题解决思路如何开启redission看门狗看门狗核心代码定时续期实现解锁实现 Redission的bug相关记录Redission依旧会产生需要考虑的问题 前言 本篇博客是介绍redission看门狗实现redis定期续期原理&#xff0c;若文章中出现相关问题&#xff0c;请指出&#x…

QComboBox中使用树形控件进行选择

事情是这样的&#xff0c;要在一个ComboBox中通过树形结构进行内容的选择。 默认的QComboBox展开是下拉的列表。因此需要定制一下。 效果就是这样的 实现上面效果的核心代码就是下面这样的 MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) { treenew…

露营小程序搭建有哪些步骤?小程序里面可以找个露营搭子

露营不仅仅是走进大自然的旅程&#xff0c;它也成为了一种社交和体验式的活动。随着小程序的普及&#xff0c;露营活动也越来越多地开始在线上开展。通过搭建一个露营小程序&#xff0c;商家不仅可以为用户提供更多的露营选择&#xff0c;还可以帮助他们找到合适的露营搭子。那…

【MATLAB】对连续信号采样的研究

注意&#xff1a;MATLAB源码会在文章最后提供 某些重要概念 信号频率 / F (单位:Hz) 在电子电路设计以及通信系统里&#xff0c;通常将 3MHz 作为高频和低频的大致分界线。频率低于 3MHz 的为低频信号&#xff0c;高于 3MHz 的视作高频信号。例如&#xff0c;调幅&#xff0…

洛谷P1525 [NOIP2010 提高组] 关押罪犯(种子并查集基础)

题目链接:P1525 [NOIP2010 提高组] 关押罪犯 - 洛谷 | 计算机科学教育新生态 题目难度:普及+/提高 题目描述: S 城现有两座监狱,一共关押着 N 名罪犯,编号分别为 1∼N,有m对罪犯,每对之间有仇恨值,问如何分配罪犯使得现 Z 市长要看到其中最大的矛盾值最小。 输入格…

【开源免费】基于SpringBoot+Vue.JS租房管理系统(JAVA毕业设计)

本文项目编号 T 102 &#xff0c;文末自助获取源码 \color{red}{T102&#xff0c;文末自助获取源码} T102&#xff0c;文末自助获取源码 目录 一、系统介绍二、数据库设计三、配套教程3.1 启动教程3.2 讲解视频3.3 二次开发教程 四、功能截图五、文案资料5.1 选题背景5.2 国内…

计算机网络——期末复习(5)期末试卷样例(含答案)

考试题型&#xff1b; 概念辨析&#xff15;个、计算与分析&#xff13;个、综合题&#xff13;&#xff0d;&#xff14;个 必考知识点&#xff1a; 概述&#xff1a;协议 体系结构 物理层&#xff1b;本次考核较少 链路层&#xff1a;CSMA/CD 退避二进制算法 &#xff0…