当前位置: 首页 > news >正文

c++ 每日十问3-处理数据

1.为什么 C++有多种整型?
解析:
C++语言中包含多种整数类型,主要包括 short、int、long 和 long long 这4种,每一种还分别包含有符号类型和无符号类型(unsigned)。此外,char 类型也可以看作一种小整数类型。C++语言中这些整数类型的主要区别在于存储使用的数位长度不同,其中 short 类型最少 16 位长度;int 类型至少和 short 类型一样长:long 类型至少 32 位,且至少和 int 类型一样长;long long 类型至少 64 位且至少和 long 类型一样长。由于存储数据使用的数位长度不同,因此这4种类型能够表示的最大整数值存在差异。此外,有符号类型能够表示负数:无符号类型不能不表示负数,且表示的最小值为 0。同一种类型的有符号数和无符号数的最大值与最小值也存在不同。因此,在程序设计中应当根据数据运算的需要选择合适类型的整型数据。


2.声明与下述描述相符的变量。

a. short 整数,值为 80。
b. unsigned int 整数,值为 42 110。

c.值为3000 000 000 的整数。
解析:
C++中变量声明的基本格式是先标识数据类型,后标识变量名,变量的初始化可以通过声明语句中的赋值运算符实现。本题中为了声明相应的变量,需要首先考虑其数据类型是否符合题目要求。理论上 C++程序设计中变量的数据类型可以使用位数较大的类型,不能够使用位数较小的数据类型来描述较大的数值。但是为了节省存储空间通常选用与数值相匹配的数据类型。
a.题目中数据常量 80 是一个整数,在 short int 的取值范围内,因此可以使用 short int 类型。 short example a= 80;b. 题目中的数值 42 110 超过了 short 的取值范围,也超过了16位有符号的int类型的最大值 32 767,因此可以使用 unsigned int 类型。声明方式如下。
unsigned int example b=42110;或者
unsigned example b = 42110;
c.题目中变量的初始值为3000 000000,超过了unsignedint类型的取值范围,因此应当使用 unsigned long 类型或者 long long类型表示该数值。声明方式如下。
unsigned long example c=3000 000000;或者
long long example_c = 3 000 000 000;


3.C++提供了什么措施来防止超出整型的范围?

解析:
C++语言中 short、int、long 和 long long 类型的主要区别在于存储的字节长度不同,因此每种类型的最大值不同。但是C++语言中并没有提供自动防止超出整数类型范围的功能需要程序员预先估计数据大小与哪种数据类型匹配。同时,C++语言标准并未明确规定每一种整数类型的宽度,其具体数值应当由开发平台和编译器决定,可以使用头文件中的climits来确定实际的最大值。


4.33L 与33 之间有什么区别?
解析:
C++语言中整型字面值具有一个默认类型,除非数值超过了 int 类型的最大值。通常整型字面值的默认类型为 int 类型,程序设计中也可以通过在常量后添加后缀来指定整型常量的具体类型,例如,L 后缀表示 long 类型,U 后缀表示unsigned 类型。此外,也可以组合使用 U和 L 来表示 unsigned long 类型。因此,本题目中常量33表示int 型数据,33L表示 long 型数据,两者在计算机内占用的存储空间不同。两者在存储空间上的具体差异由实现平台决定。


5.下面两条 C++语句是否等价? char grade = 65; char grade = 'A';

解析:
本题中的两条声明语句都声明了字符类型的变量grade,并将其初始化为'A'。在基于ASCII 码的平台下两条语句可以通用,不基于 ASCI 码的平台下则两者不能通用。此外 C++中两条语句的具体实现也稍有区别。第1条语句中65是一个int类型的数据常量,初始化过程中会进行类型转换,即将整型数据 65 转换成字符类型,再存储到 grade 内,数位宽度会变化。第2条语句直接将变量 grade 初始化为字符类型的数据常量'A。


6.如何使用 C++来找出编码 88 表示的字符?指出至少两种方法。

解析:
编程过程中要查找与 ASCI 编码对应的字符,一般可以直接查询 ASCH 码表。该方法的优点是能够查找所有对应的 ASCI 字符。此外,也可以通过编写简单语句查询。通过语句查询的缺点是某些不可见字符无法显示。本题中可以通过 C++语句查询,具体方法如下。
char example = 88; cout<<example<<endl;
以上语句通过 char 类型变量直接输出。 cout<<(char) 88<<endl;
通过C风格的强制类型转换,将整型数据 88 转换为 char 类型并输出。 cout<<char(88)<<endl;
通过 C++类型的强制类型转换,将整型数据 88 转换为 char 类型并输出。 cout.put(char(88));
通过 cout.put()函数直接输出类型强制转换后的 char 数据。


7.将long 值赋给 float 变量会导致舍入误差,将 long 值赋给 double 变量呢? 将 long long值赋给 double 变量呢?
解析:
C++中的浮点类型数据表示带小数部分的数据,但是浮点型数据在很多情况下并不能精确表示所有数字,通常在很多平台下C++中 float类型只能够表示6位有效数字,double仅能表示15位有效数字(浮点型数据的具体有效数字范围定义在cfloat 头文件中)。因此在整型数据转换为浮点型数据的过程中会产生舍入误差,这种误差的产生主要是由整型数据的有效数字超过了浮点型数据的表示范围引起的。long类型数据的最大值为20亿,即10位数,因此转换为 float 类型时会丢失精度,但double类型的有效数字为15位,因此不会产生舍入误差,但 long long 类型最大可以包含 19 位有效数字,转换为 double 类型可能会产生舍入误差。


8. 下列 C++表达式的结果分别是多少? a.8*9+2 b. 6*3/4 c.3/4*6 d. 6.0*3/4 e.1584

解析:
C++的算术运算符主要有加(+)、减(一)、乘(*)、除(1)和取模(%),在进行算表达式求值时主要需要注意运算符的优先级和结合性两个知识点,其中算术运算符的优生级是乘、除和取模高于加、减。当算术运算符的优先级相同时,需要考虑操作数(即参与运算的数值)的结合性是从左到右还是从右到左。对于同一个操作数,在C++中从左向右运算。此外,运算过程中对于不同类型的数据,C++会进行隐式的数据类型转换。一般的转换规则是将取值范围较小的数据转换成表达式中取值范围较大的数据类型。在此基础上可以判断题目的运算结果。
a.8*9+2 的结果 74,先计算乘法,再做加法。
b.6*3/4 的结果 4,运算符优先级相同,因此操作数从左到右结合,先计算 6*3,结果为 18,由于两个操作数是整数,因此最后的除法结果为其商,无小数部分。
c.3/4*6的结果0,运算符优先级相同,因此操作数从左到右结合,先计算314,结果为其商 0,最后做乘法,0*6为0。
d.6.0*3/4的结果为4.5,运算符优先级相同,因此操作数从左到右结合,先计算6.0*3,结果为浮点数 18.0,后计算 18.0/4,得到浮点结果4.5。
e.1584 的结果为 3,取模运算,结果为 3。


9.假设 x1 和 x2 是两个 double 变量,要将它们作为整数相加,再将结果赋给一个整型变量。请编写一条完成这项任务的 C++语句。如果要将它们作为 double 值相加并转换为 int 呢?
解析:
C++中要将浮点型数据转换成整型数据,首先舍弃小数部分,其次如果原数据大于目标类型的取值范围,结果将不确定。程序中可以使用多种形式进行强制类型转换,也可以在不同时机进行类型转换,先转换成为整型数据再进行计算和先计算再转换成整型数据可能会产生不同效果,例如,对于 1.8+1.9,先计算再进行类型转换,得到结果 3;先进行类型转换再计算,得到结果 2。这些问题在程序设计中需要特别注意。先计算再进行类型转换的语句如下所示。
int pos = int(x1+x2);或者int pos =(int)(x1+x2);先进行类型转换再计算的语句如下所示。 int pos = int(x1)+int(x2);或者
int pos =(int)x1+(int)x2;

10.下面每条语句声明的变量分别是什么类型的? a. auto cars = 15
b. auto iou = 150.37f c. auto level ='B'

d aut U'/U0002155 21 
e. auto fract = 8.25f/2.5 
解析:
C++中的关键字 auto 能够使编译器根据初始值自动推断变量的类型。
a.auto cars = 15 声明了变量 cars 并初始化为整型数据 15,因此 auto 关键字使编译器推断变量 cars 的类型为 int 类型。
b.auto iou = 150.37f 声明了变量 iou 并初始化为 float 类型数据 150.37f,因此 auto 关键字使编译器推断变量 iou 的类型为 float 类型。
c.auto level ='B'声明了变量并初始化为 char 类型的常量'B',因此 auto 关键字使编译器推断变量 level 的类型为 char 类型。
d.在语句auto crat=U'/U0002155'中,常量U'/U0002155'中前缀U表示该常量是 char32_t类型的数据,因此 auto 关键字使编译器推断变量 crat 为 char32t类型。
e.在语句auto fract=8.25f/2.5 中,变量 fract 初始化为表达式 8.25f/2.5 的值,该表达式中 8.25f为 float 类型,2.5 为 double 类型,除法运算产生数据类型转换,其结果为 double 类型,因此通过 auto 关键字使编译器推断 fract 变量为 double 类型。

相关文章:

c++ 每日十问3-处理数据

1.为什么 C有多种整型? 解析: C语言中包含多种整数类型&#xff0c;主要包括 short、int、long 和 long long 这4种&#xff0c;每一种还分别包含有符号类型和无符号类型(unsigned)。此外&#xff0c;char 类型也可以看作一种小整数类型。C语言中这些整数类型的主要区别在于存…...

【MySQL】实验一 数据定义

目录 1. 表定义&#xff1a;创建工程项目表 2. 表定义&#xff1a;创建供应商表 3. 表定义&#xff1a;创建供应情况表 4. 表定义&#xff1a;创建零件表 5. 表定义&#xff1a;创建student表 6. 表定义&#xff1a;创建course表 7. 表定义&#xff1a;创建sc表 8.…...

17.电话号码的字母组合(深度递归遍历解决经典老题)

前文C深度递归遍历解决"电话号码的字母组合问题"&#xff0c;本题考察的比较全面&#xff0c;考察到vector的使用&#xff0c;深度遍历以及递归的熟练度&#xff0c;希望能对铁子们有所帮助一&#xff0c;题目链接&#xff1a;https://leetcode.cn/problems/letter-c…...

Python 基础教程【1】:Python介绍、变量和数据类型、输入输出、运算符

本文已收录于专栏&#x1f33b;《Python 基础》文章目录1、Python 介绍2、变量和数据类型2.1 注释的使用2.2 变量以及数据类型2.2.1 什么是变量&#xff1f;2.2.2 怎么给变量起名&#xff1f;2.2.3 变量的类型&#x1f3a8; 整数 int&#x1f3a8; 浮点数&#xff08;小数&…...

【RPC】Apache Thrift系列详解 - 概述与入门

文章目录前言正文Thrift的技术栈Thrift的特性(一) 开发速度快(二) 接口维护简单(三) 学习成本低(四) 多语言/跨语言支持(五) 稳定/广泛使用Thrift的数据类型Thrift的协议Thrift的传输层Thrift的服务端类型Thrift入门示例(一) 编写Thrift IDL文件(二) 新建Maven工程总结前言 Th…...

class03:MVVM模型与响应式原理

目录一、MVVM模型二、内在1. 深入响应式原理2. Object.entries3. 底层搭建一、MVVM模型 MVVM&#xff0c;即Model 、View、ViewModel。 Model > data数据 view > 视图&#xff08;vue模板&#xff09; ViewModel > vm > vue 返回的实例 > 控制中心, 负责监听…...

[Spring学习]08 @Resource和@Autowired注解的区别

目录前言一、Resource和Autowired注解的身世1、Resource注解2、Autowired注解3、常见的三种依赖注入方式及区别1. Filed注入2. Setter注入3. Constructor注入4. 三种依赖注入方式的区别二、Resource和Autowired注解的区别三、Resource和Autowired注解的推荐用法前言 当我们在属…...

前端开发神器VS Code安装教程

✅作者简介&#xff1a;CSDN一位小博主&#xff0c;正在学习前端 &#x1f4c3;个人主页&#xff1a;白月光777的CSDN博客 &#x1f4ac;个人格言&#xff1a;但行好事&#xff0c;莫问前程 安装VS CodeVS Code简介VS Code安装VS Code汉化结束语&#x1f4a1;&#x1f4a1;&…...

【Hive进阶】-- Hive SQL、Spark SQL和 Hive on Spark SQL

1.Hive SQL 1.1 基本介绍概念Hive由Facebook开发&#xff0c;用于解决海量结构化日志的数据统计&#xff0c;于2008年贡献给 Apache 基金会。Hive是基于Hadoop的数据仓库工具&#xff0c;可以将结构化数据映射为一张表&#xff0c;提供类似SQL语句查询功能本质&#xff1a;将Hi…...

搭建自己的直播流媒体服务器SRS,以及SRS+OBS直播推拉流使用及配置

一、前言 目前&#xff0c;全球直播带货什么的&#xff0c;成为主流&#xff0c;那如何自己搭建一个直播服务器呢。首先需要一个流媒体服务器&#xff0c;搭建流媒体有很多种方式&#xff0c;如下&#xff1a; 流媒体解决方案 Live555 &#xff08;C&#xff09;流媒体平台框…...

Node.js-----使用express写接口

使用express写接口 文章目录使用express写接口创建基本的服务器创建API路由模块编写GET接口编写POST接口CROS跨域资源共享1.接口的跨域问题2.使用cros中间件拒绝跨域问题3.什么是cros4.cros的注意事项5.cros请求的分类JSONP接口1.回顾jsonp的概念和特点2.创建jsonp接口的注意事…...

【Linux修炼】16.共享内存

每一个不曾起舞的日子&#xff0c;都是对生命的辜负。 共享内存一.共享内存的原理二.共享内存你的概念2.1 接口认识2.2演示生成key的唯一性2.3 再谈key三.共享资源的查看3.1 如何查看IPC资源3.2 IPC资源的特征3.3 进程之间通过共享内存进行关联四.共享内存的特点五.共享内存的内…...

JAVA进阶 —— Stream流

目录 一、 引言 二、 Stream流概述 三、Stream流的使用步骤 1. 获取Stream流 1.1 单列集合 1.2 双列集合 1.3 数组 1.4 零散数据 2. Stream流的中间方法 3. Stream流的终结方法 四、 练习 1. 数据过滤 2. 数据操作 - 按年龄筛选 3. 数据操作 - 演员信息要求…...

Linux基础命令大全(上)

♥️作者&#xff1a;小刘在C站 ♥️个人主页&#xff1a;小刘主页 ♥️每天分享云计算网络运维课堂笔记&#xff0c;努力不一定有收获&#xff0c;但一定会有收获加油&#xff01;一起努力&#xff0c;共赴美好人生&#xff01; ♥️夕阳下&#xff0c;是最美的绽放&#xff0…...

嵌入式 串口通信

目录 1、通信的基本概念 1.1 串行通信 1.2 并行通信 2、串行通信的特点 2.1 单工 2.2 半双工 2.3 全双工 3、串口在STM32的引脚 4、STM32的串口的接线 4.1 STM32的串口1和电脑通信的接线方式 4.2 单片机和具备串口的设备连接图 5、串口通信协议 6、串口通信…...

C语言函数调用栈

栈溢出&#xff08;stack overflow&#xff09;是最常见的二进制漏洞&#xff0c;在介绍栈溢出之前&#xff0c;我们首先需要了解函数调用栈。 函数调用栈是一块连续的用来保存函数运行状态的内存区域&#xff0c;调用函数&#xff08;caller&#xff09;和被调用函数&#xf…...

【高阶数据结构】红黑树

文章目录1. 使用场景2. 性质3. 结点定义4. 结点旋转5. 结点插入1. 使用场景 Linux进程调度CFSNginx Timer事件管理Epoll事件块的管理 2. 性质 每一个节点是红色或者黑色根节点一定是黑色每个叶子节点是黑色如果一个节点是红色&#xff0c;那么它的两个儿子节点都是黑色从任意…...

网络协议分析期末复习(二)

目录 12. 端口的定义及常见应用对应的端口号 13. UDP协议概述 14.UDP数据报格式及各字段意义 15. UDP-Lite协议概述 16. TCP数据报格式及各字段意义 17. TCP连接建立及协商参数的过程 18. TCP连接释放过程 19. 路由协议分类及各类的具体协议 20. 路由算法常用的度量 2…...

【C++】STL简介 及 string的使用

文章目录1. STL简介1.1 什么是STL1.2 STL的版本1.3 STL的六大组件2. string类的使用2.1 C语言中的字符串2.2 标准库中的string类2.3 string类的常用接口说明1. string类对象的常见构造2. string类对象的容量操作3. string类对象的修改操作4. resize和reserve5. 认识迭代器&…...

MySQL事务详解

&#x1f3c6;今日学习目标&#xff1a; &#x1f340;Spring事务和MySQL事务详解 ✅创作者&#xff1a;林在闪闪发光 ⏰预计时间&#xff1a;30分钟 &#x1f389;个人主页&#xff1a;林在闪闪发光的个人主页 &#x1f341;林在闪闪发光的个人社区&#xff0c;欢迎你的加入: …...

基于FPGA的PID算法学习———实现PID比例控制算法

基于FPGA的PID算法学习 前言一、PID算法分析二、PID仿真分析1. PID代码2.PI代码3.P代码4.顶层5.测试文件6.仿真波形 总结 前言 学习内容&#xff1a;参考网站&#xff1a; PID算法控制 PID即&#xff1a;Proportional&#xff08;比例&#xff09;、Integral&#xff08;积分&…...

阿里云ACP云计算备考笔记 (5)——弹性伸缩

目录 第一章 概述 第二章 弹性伸缩简介 1、弹性伸缩 2、垂直伸缩 3、优势 4、应用场景 ① 无规律的业务量波动 ② 有规律的业务量波动 ③ 无明显业务量波动 ④ 混合型业务 ⑤ 消息通知 ⑥ 生命周期挂钩 ⑦ 自定义方式 ⑧ 滚的升级 5、使用限制 第三章 主要定义 …...

如何在看板中体现优先级变化

在看板中有效体现优先级变化的关键措施包括&#xff1a;采用颜色或标签标识优先级、设置任务排序规则、使用独立的优先级列或泳道、结合自动化规则同步优先级变化、建立定期的优先级审查流程。其中&#xff0c;设置任务排序规则尤其重要&#xff0c;因为它让看板视觉上直观地体…...

2.Vue编写一个app

1.src中重要的组成 1.1main.ts // 引入createApp用于创建应用 import { createApp } from "vue"; // 引用App根组件 import App from ./App.vue;createApp(App).mount(#app)1.2 App.vue 其中要写三种标签 <template> <!--html--> </template>…...

第25节 Node.js 断言测试

Node.js的assert模块主要用于编写程序的单元测试时使用&#xff0c;通过断言可以提早发现和排查出错误。 稳定性: 5 - 锁定 这个模块可用于应用的单元测试&#xff0c;通过 require(assert) 可以使用这个模块。 assert.fail(actual, expected, message, operator) 使用参数…...

【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)

🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…...

WordPress插件:AI多语言写作与智能配图、免费AI模型、SEO文章生成

厌倦手动写WordPress文章&#xff1f;AI自动生成&#xff0c;效率提升10倍&#xff01; 支持多语言、自动配图、定时发布&#xff0c;让内容创作更轻松&#xff01; AI内容生成 → 不想每天写文章&#xff1f;AI一键生成高质量内容&#xff01;多语言支持 → 跨境电商必备&am…...

让AI看见世界:MCP协议与服务器的工作原理

让AI看见世界&#xff1a;MCP协议与服务器的工作原理 MCP&#xff08;Model Context Protocol&#xff09;是一种创新的通信协议&#xff0c;旨在让大型语言模型能够安全、高效地与外部资源进行交互。在AI技术快速发展的今天&#xff0c;MCP正成为连接AI与现实世界的重要桥梁。…...

(转)什么是DockerCompose?它有什么作用?

一、什么是DockerCompose? DockerCompose可以基于Compose文件帮我们快速的部署分布式应用&#xff0c;而无需手动一个个创建和运行容器。 Compose文件是一个文本文件&#xff0c;通过指令定义集群中的每个容器如何运行。 DockerCompose就是把DockerFile转换成指令去运行。 …...

网络编程(UDP编程)

思维导图 UDP基础编程&#xff08;单播&#xff09; 1.流程图 服务器&#xff1a;短信的接收方 创建套接字 (socket)-----------------------------------------》有手机指定网络信息-----------------------------------------------》有号码绑定套接字 (bind)--------------…...