蓝桥杯准备训练(lesson2 ,c++)

3.1 字符型

char //character的缩写

在键盘上可以敲出各种字符,如: a , q , @ , # 等,这些符号都被称为字符,字符是⽤单引号括
起来的,如: ‘a’ , ‘b’ , ‘@’ 。为了能说明这些字符,给他们抽象出⼀种类型,就是字符型,C
语⾔中就是 char 。

ASCII编码
我们知道在计算机中所有的数据都是以⼆进制的形式存储的,那这些字符在内存中分别以什么样的⼆进制存储的呢?如果我们每个⼈⾃⼰给这些字符中的每个字符编⼀个⼆进制序列,这个叫做编码,为了⽅便⼤家相互通信,不造成混乱,后来美国国家标准学会(ANSI)出台了⼀个标准 ASCII 编码,C语⾔中的字符就遵循了 ASCII 编码的⽅式。

在这里插入图片描述
参考:https://zh.cppreference.com/w/cpp/language/ascii
我们不需要记住所有的ASCII码表中的数字,使⽤时查看就可以,不过我们最好能掌握⼏组特殊的数据:
• 字符 A~Z 的ASCII码值从 65~90
• 字符 a~z 的ASCII码值从 97~122
• 对应的⼤⼩写字符(a和A)的ASCII码值的差值是 32
• 数字字符 0~9 的ASCII码值从 48~57
• 换⾏ \n 的ASCII值是: 10
• ASCII码值从0~31 这32个字符是不可打印字符,⽆法打印在屏幕上观察

#include<iostream>
using namespace std;
int main()
{char c1 = 'Q';cout << c1 << endl;char c2 = 81;cout << c2 << endl;//这⾥的81是字符Q的ASCII码值,也是可以正常打印的return 0;
}

3.2 整形

整型类型是对所有整数的抽象,为了能对整数形成统⼀的类型标识,就有整型;
在 C 和 C++ 中 整型被分为四⼤类: short 、 int 、 long 、 long long 。

short [int]//短整型
int//整型
long  [int]//⻓整型
long long [int] //更⻓的整型

3.3 浮点型

浮点型式对所有实数(⼩数)的抽象,为了能对实数进⾏统⼀的类型标识,就有了浮点型。
浮点型有三种:

float//单精度浮点型
double//双精度浮点型
long double//更⻓的双精度浮点型
#include<iostream>
using namespace std;
int main()
{char c = 'a';short s = -10;int i = -10;long l  = -10;long long ll = -10;float k = 3.14f;double d = 3.14;long double ld = 3.14;return 0;
}

在C/C++中⼩数的书写形式:

3.14;//编译器会默认识别为double类型
3.14f;//编译器会默认识别为float类型
1e5;//这种写法是科学计数法的形式,意思是1.0*10^5
1e5+10;//1*100000+10 == 100010
1.23e5+10; //1.23*100000+10 = 123010

3.4 布尔类型

C++有⼀种类型叫: bool (布尔类型),布尔类型的变量的值可以是 true 或 false ,这种类型
类型的变量专⻔⽤来表⽰真或假的。当然在C和C++中,0表⽰假,⾮0表⽰真,有时候不使⽤ bool 类型也能表达相同的逻辑。

//代码1
#include <iostream>
using namespace std;
int main()
{bool flag = true;if (flag)printf("I like C++!\n");return 0;
}
//代码2
#include <iostream>
using namespace std;
int main()
{int flag = 0;cin >> flag; //如果输⼊⾮零的值,flag就表⽰真if (flag)printf("I like C++!\n");return 0;
}

3.5 signed 与 unsigned

signed 和 unsigned 关键字修饰字符型和整型类型的。
signed 关键字,表⽰⼀个类型带有正负号,包含负值;⽐如:温度、银⾏存款。
unsigned 关键字,表⽰该类型不带有正负号,只能表⽰零和正整数,⽐如:年龄。
有了 signed 和 unsigned 的修饰,字符和整型类型其实更加丰富,可以有以下这些:

//字符型
char
signed char//有符号的字符类型
unsigned char //⽆符号的字符类型//短整型
short [int]
[signed] short [int]//有符号的短整型
unsigned short [int]//⽆符号的短整型//整型
int
[signed] int//有符号的整型
unsigned [int]//⽆符号的整型//⻓整型
long [int]
[signed] long [int] //有符号的⻓整型
unsigned long [int] //⽆符号的⻓整型//更⻓的整型
long long [int]
[signed] long long [int]//有符号的
unsigned long long [int]//⽆符号的

对于 int 类型,默认是带有正负号的,也就是说 int 等同于 signed int 。
由于这是默认情况,关键字 signed ⼀般都省略不写,但是写了也不算错。

signed int a;    //等同于int a,⼀般不写signed

int 类型也可以不带正负号,只表⽰⾮负整数。这时就必须使⽤关键字 unsigned 声明变量。

unsigned int a; // unsigned int:⽆符号整数类型

变量声明为 unsigned 的好处是,同样⻓度的内存能够表⽰的最⼤整数值,增⼤了⼀倍。
⽐如,16位的 signed short int 的取值范围是: -32768~32767 ,最⼤是 32767 ;⽽
unsigned short int 的取值范围是: 0~65535 ,最⼤值增⼤到了 65535 。32位的 signed
int 的取值范围可以参看 climits 中给出的定义。

下⾯的定义是Dev-C++环境中, climits 中相关定义,其实如果仔细看 climits 中也是包含的
limits.h 。

#define SHRT_MIN    (-32768)//有符号16位整型的最⼩值
#define SHRT_MAX      32767//有符号16位整型的最⼤值
#define USHRT_MAX     0xffffU//⽆符号16位整型的最⼤值
#define INT_MIN     (-2147483647 - 1)//有符号整型的最⼩值
#define INT_MAX       2147483647//有符号整型的最⼤值

unsigned int ⾥⾯的 int 可以省略,所以上⾯的变量声明也可以写成下⾯这样。

unsigned a;

字符类型 char 也可以设置 signed 和 unsigned 。

signed char c;// 范围为 -128 到 127
unsigned char c;// 范围为 0 到 255

3.6 数据类型⻓度

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

3.6.1 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 = 10;cout << sizeof(a) << endl;cout << sizeof a << endl;//a是变量的名字,可以省略掉sizeof后边的(),但不建议去掉cout << sizeof(int) << endl;return 0;
}

3.6.2 各数据类型⻓度

#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;
}

在DevC++下的输出:

1
1
2
4
4
8
4
8
16

该如何理解这些数据类型的⻓度呢?其实我们使⽤这些数据类型可以向内存申请空间(就是创建变
量),不同的数据类型⼀次性申请的空间⼤⼩是有差异的。你可以这样理解:
在这里插入图片描述

3.7 各类型取值范围

前⾯的知识已经让我们了解到了很多的数据类型,不同的数据类型所创建的变量的⻓度是有差异的,这个⻓度差异⼜决定了,这种变量中能存储的值的⼤⼩。
其实每⼀种数据类型有⾃⼰的取值范围,也就是存储的数值的最⼤值和最⼩值的区间,有了丰富的类型,我们就可以在适当的场景下去选择适合的类型。
下⾯是不同数据类型的取值范围。
在这里插入图片描述

为了代码的可移植性,和⽅便记忆,需要知道某种整数类型的极限值时,经常使⽤这些速记的符号。
limits.h ⽂件中说明了整型类型的取值范围。(C++中头⽂件的名字是 )
float.h 这个头⽂件中说明浮点型类型的取值范围。(C++中头⽂件的名字是 )
⼤家对这些类型的取值范围还得⼤概知道取值范围的数量级,像 int 类型取值⼤概就
是:-2.1*109~2.1*109,这⾥就是10^9这样的数量级。

3.8 typedef

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

3.9 课后练习

练习1:整数

链接:https://ac.nowcoder.com/acm/problem/21985

#include <iostream>
using namespace std;
int main()
{int a;cin >> a;cout << a;return 0;
}

练习2:打印字符

链接:https://www.luogu.com.cn/problem/B2018

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

练习3:倒序

链接:https://ac.nowcoder.com/acm/problem/21993

#include <iostream>
using namespace std;
int main()
{int a = 0;int b = 0;int c = 0;cin >> a >> b >> c;cout << c << " " << b << " " << a << endl;return 0;
}

练习4:整型数据类型存储空间⼤⼩

链接:http://ybt.ssoier.cn:8088/problem_show.php?pid=1016

#include <iostream>
using namespace std;
int main()
{int n = 0;short s = 0;cout << sizeof(n) << " " << sizeof(s) << endl;return 0;
}

以上就是今天所有的学习内容,由于我们从最基础开始学习,希望大家不要觉得题目太简单就直接跳过,防止与课程进度脱节。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C# 动态类型 Dynamic

文章目录 前言1. 什么是 Dynamic&#xff1f;2. 声明 Dynamic 变量3. Dynamic 的运行时类型检查4. 动态类型与反射的对比5. 使用 Dynamic 进行动态方法调用6. Dynamic 与 原生类型的兼容性7. 动态与 LINQ 的结合8. 结合 DLR 特性9. 动态类型的性能考虑10. 何时使用 Dynamic&…

前端开发 之 15个页面加载特效中【附完整源码】

前端开发 之 15个页面加载特效中【附完整源码】 文章目录 前端开发 之 15个页面加载特效中【附完整源码】八&#xff1a;圆环百分比加载特效1.效果展示2.HTML完整代码 九&#xff1a;毒药罐加载特效1.效果展示2.HTML完整代码 十&#xff1a;无限圆环加载特效1.效果展示2.HTML完…

C语言练习作业1204

编写程序实现&#xff1a;strlen&#xff1b;strcpy&#xff1b;strcat&#xff1b;strcmp 的功能。 一、strlen()函数 1.1 分析 size_t strlen(const char *s);【功能】&#xff1a;计算字符串的长度&#xff0c;\0之前的字符串数量&#xff1b;【参数】&#xff1a;s&#…

查询品牌涉及两张表(brand、brand_admin_mapping)

文章目录 1、BrandController2、AdminCommonService3、BrandApiService3、BrandCommonService4、BrandSqlService涉及的表SQL 查询逻辑参数处理执行查询完整 SQL 逻辑参数映射总结 查询指定管理员下的品牌所涉及的表有哪些&#xff1f; http://127.0.0.1:8087/brand/admin/list…

[go-redis]客户端的创建与配置说明

创建redis client 使用go-redis库进行创建redis客户端比较简单&#xff0c;只需要调用redis.NewClient接口创建一个客户端 redis.NewClient(&redis.Options{Addr: "127.0.0.1:6379",Password: "",DB: 0, })NewClient接口只接收一个参数red…

Linux CentOS

​阿里云开源镜像下载链接 https://mirrors.aliyun.com/centos/7/isos/x86_64/ VMware 安装 CentOS7 自定义 下一步 选择稍后安装操作系统 选择 输入 查看物理机CPU内核数量 CtrlShiftEsc 总数不超过物理机内核数量 推荐内存 自选 推荐 推荐 默认 拆分成多个 默认 自定义硬件…

【STM32 Modbus编程】-作为主设备读取线圈和输入

作为主设备读取线圈和输入 文章目录 作为主设备读取线圈和输入1、硬件准备与连接1.1 RS452模块介绍1.2 硬件配置与接线1.3 软件准备2、读取线圈2.1 主设备发送请求2.2 从设备响应请求2.3 主机接收数据3、读取输入4、结果本文将在前面文章的基础上,实现主设备通过ModBus协议对从…

2-2-18-13 QNX系统架构之原生网络(Qnet)

阅读前言 本文以QNX系统官方的文档英文原版资料为参考&#xff0c;翻译和逐句校对后&#xff0c;对QNX操作系统的相关概念进行了深度整理&#xff0c;旨在帮助想要了解QNX的读者及开发者可以快速阅读&#xff0c;而不必查看晦涩难懂的英文原文&#xff0c;这些文章将会作为一个…

多模态COGMEN详解

✨✨ 欢迎大家来访Srlua的博文&#xff08;づ&#xffe3;3&#xffe3;&#xff09;づ╭❤&#xff5e;✨✨ &#x1f31f;&#x1f31f; 欢迎各位亲爱的读者&#xff0c;感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢&#xff0c;在这里我会分享我的知识和经验。&am…

基于频谱处理的音频分离方法

基于频谱处理的音频分离方法 在音频处理领域&#xff0c;音频分离是一个重要的任务&#xff0c;尤其是在语音识别、音乐制作和通信等应用中。音频分离的目标是从混合信号中提取出单独的音频源。通过频谱处理进行音频分离是一种有效的方法&#xff0c;本文将介绍其基本原理、公…

HTML旋转爱心

系列文章 序号目录1HTML满屏跳动的爱心&#xff08;可写字&#xff09;2HTML五彩缤纷的爱心3HTML满屏漂浮爱心4HTML情人节快乐5HTML蓝色爱心射线6HTML跳动的爱心&#xff08;简易版&#xff09;7HTML粒子爱心8HTML蓝色动态爱心9HTML跳动的爱心&#xff08;双心版&#xff09;1…

查看 tomcat信息 jconsole.exe

Where is the jconsole.exe? location: JDK/bin/jconsole.exe

设计模式10:观察者模式(订阅-发布)

系列总链接&#xff1a;《大话设计模式》学习记录_net 大话设计-CSDN博客 参考&#xff1a;简说设计模式——工厂方法模式 - JAdam - 博客园 参考&#xff1a;简单工厂模式(Simple Factory Pattern) - 回忆酿的甜 - 博客园 一&#xff1a;概述 观察者模式&#xff0…

AIGC 时代的文学:变革与坚守

目录 一.AIGC 带来的文学变革 1.创作方式的改变 2.阅读体验的升级 3.文学市场的重塑 二.文学在 AIGC 时代的坚守 1.人类情感的表达 2.文学的艺术性 3.文学的社会责任 三.AIGC 与人类作家的共生之路 1.相互学习 2.合作创作 3.共同发展 另&#xff1a; 总结 随着人…

Wwise 使用MIDI文件、采样音频

第一种&#xff1a;当采样音频只有一个文件的时候 1.拖入MIDI文件到Interactive Music Hierarchy层级 2.拖入采样音频到Actor-Mixer Hierarchy层级 3.勾选MIDI显示出面板&#xff0c;设置Root Note与采样音频音高相同&#xff0c;这里是C#5 4.播放测试&#xff0c;成功&…

【计算机网络】实验9: 路由信息协议RIP

实验9 路由信息协议RIP 一、实验目的 本实验的主要目的是深入理解RIP&#xff08;路由信息协议&#xff09;的工作原理&#xff0c;以便掌握其在网络中的应用。通过对RIP的学习&#xff0c;我们将探讨该协议如何实现路由选择和信息传播&#xff0c;从而确保数据包能够在网络中…

python源码实例游戏开发小程序办公自动化网络爬虫项目开发源码(250+个项目、26.6GB)

文章目录 源代码下载地址项目介绍预览 项目备注源代码下载地址 源代码下载地址 点击这里下载源码 项目介绍 python源码实例游戏开发小程序办公自动化网络爬虫项目开发源码(250个项目、26.6GB) 预览 项目备注 1、该资源内项目代码都经过测试运行成功&#xff0c;功能ok的情…

深入理解AVL树:结构、旋转及C++实现

1. AVL树的概念 什么是AVL树&#xff1f; AVL树是一种自平衡的二叉搜索树&#xff0c;其发明者是Adelson-Velsky和Landis&#xff0c;因此得名“AVL”。AVL树是首个自平衡二叉搜索树&#xff0c;通过对树的平衡因子进行控制&#xff0c;确保任何节点的左右子树高度差最多为1&…

spark-sql配置教程

1.前期准备 &#xff08;1&#xff09;首先要把hadoop集群&#xff0c;hive和spark等配置好 hadoop集群&#xff0c;hive的配置可以看看这个博主写的博客 大数据_蓝净云的博客-CSDN博客 或者看看黑马程序员的视频 黑马程序员大数据入门到实战教程&#xff0c;大数据开发必…

Git分布式版本控制工具 Git基本概念、Git工作流程、Git常用命令、Git远程仓库、IDEA操作Git

目录 ​​​​​​ 1.Git基本概念 1.1 概述 1.1.1 开发中的实际场景 1.1.2 版本控制器的方式 1.1.2.1 集中式版本控制工具(SVN) 1.1.2.2 分布式版本控制工具(Git) 2.概述git工作流程 3.Git常用命令 3.1 Git环境配置 3.1.1 下载与安装 3.1.2 基本配置 3.1.3 为常用指令配置别名&…