当前位置: 首页 > 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;欢迎你的加入: …...

Prompt Tuning、P-Tuning、Prefix Tuning的区别

一、Prompt Tuning、P-Tuning、Prefix Tuning的区别 1. Prompt Tuning(提示调优) 核心思想:固定预训练模型参数,仅学习额外的连续提示向量(通常是嵌入层的一部分)。实现方式:在输入文本前添加可训练的连续向量(软提示),模型只更新这些提示参数。优势:参数量少(仅提…...

【位运算】消失的两个数字(hard)

消失的两个数字&#xff08;hard&#xff09; 题⽬描述&#xff1a;解法&#xff08;位运算&#xff09;&#xff1a;Java 算法代码&#xff1a;更简便代码 题⽬链接&#xff1a;⾯试题 17.19. 消失的两个数字 题⽬描述&#xff1a; 给定⼀个数组&#xff0c;包含从 1 到 N 所有…...

css3笔记 (1) 自用

outline: none 用于移除元素获得焦点时默认的轮廓线 broder:0 用于移除边框 font-size&#xff1a;0 用于设置字体不显示 list-style: none 消除<li> 标签默认样式 margin: xx auto 版心居中 width:100% 通栏 vertical-align 作用于行内元素 / 表格单元格&#xff…...

2023赣州旅游投资集团

单选题 1.“不登高山&#xff0c;不知天之高也&#xff1b;不临深溪&#xff0c;不知地之厚也。”这句话说明_____。 A、人的意识具有创造性 B、人的认识是独立于实践之外的 C、实践在认识过程中具有决定作用 D、人的一切知识都是从直接经验中获得的 参考答案: C 本题解…...

听写流程自动化实践,轻量级教育辅助

随着智能教育工具的发展&#xff0c;越来越多的传统学习方式正在被数字化、自动化所优化。听写作为语文、英语等学科中重要的基础训练形式&#xff0c;也迎来了更高效的解决方案。 这是一款轻量但功能强大的听写辅助工具。它是基于本地词库与可选在线语音引擎构建&#xff0c;…...

【Go语言基础【13】】函数、闭包、方法

文章目录 零、概述一、函数基础1、函数基础概念2、参数传递机制3、返回值特性3.1. 多返回值3.2. 命名返回值3.3. 错误处理 二、函数类型与高阶函数1. 函数类型定义2. 高阶函数&#xff08;函数作为参数、返回值&#xff09; 三、匿名函数与闭包1. 匿名函数&#xff08;Lambda函…...

安宝特案例丨Vuzix AR智能眼镜集成专业软件,助力卢森堡医院药房转型,赢得辉瑞创新奖

在Vuzix M400 AR智能眼镜的助力下&#xff0c;卢森堡罗伯特舒曼医院&#xff08;the Robert Schuman Hospitals, HRS&#xff09;凭借在无菌制剂生产流程中引入增强现实技术&#xff08;AR&#xff09;创新项目&#xff0c;荣获了2024年6月7日由卢森堡医院药剂师协会&#xff0…...

接口自动化测试:HttpRunner基础

相关文档 HttpRunner V3.x中文文档 HttpRunner 用户指南 使用HttpRunner 3.x实现接口自动化测试 HttpRunner介绍 HttpRunner 是一个开源的 API 测试工具&#xff0c;支持 HTTP(S)/HTTP2/WebSocket/RPC 等网络协议&#xff0c;涵盖接口测试、性能测试、数字体验监测等测试类型…...

区块链技术概述

区块链技术是一种去中心化、分布式账本技术&#xff0c;通过密码学、共识机制和智能合约等核心组件&#xff0c;实现数据不可篡改、透明可追溯的系统。 一、核心技术 1. 去中心化 特点&#xff1a;数据存储在网络中的多个节点&#xff08;计算机&#xff09;&#xff0c;而非…...

阿里云Ubuntu 22.04 64位搭建Flask流程(亲测)

cd /home 进入home盘 安装虚拟环境&#xff1a; 1、安装virtualenv pip install virtualenv 2.创建新的虚拟环境&#xff1a; virtualenv myenv 3、激活虚拟环境&#xff08;激活环境可以在当前环境下安装包&#xff09; source myenv/bin/activate 此时&#xff0c;终端…...