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语言中包含多种整数类型,主要包括 short、int、long 和 long long 这4种,每一种还分别包含有符号类型和无符号类型(unsigned)。此外,char 类型也可以看作一种小整数类型。C语言中这些整数类型的主要区别在于存…...
【MySQL】实验一 数据定义
目录 1. 表定义:创建工程项目表 2. 表定义:创建供应商表 3. 表定义:创建供应情况表 4. 表定义:创建零件表 5. 表定义:创建student表 6. 表定义:创建course表 7. 表定义:创建sc表 8.…...
17.电话号码的字母组合(深度递归遍历解决经典老题)
前文C深度递归遍历解决"电话号码的字母组合问题",本题考察的比较全面,考察到vector的使用,深度遍历以及递归的熟练度,希望能对铁子们有所帮助一,题目链接:https://leetcode.cn/problems/letter-c…...
Python 基础教程【1】:Python介绍、变量和数据类型、输入输出、运算符
本文已收录于专栏🌻《Python 基础》文章目录1、Python 介绍2、变量和数据类型2.1 注释的使用2.2 变量以及数据类型2.2.1 什么是变量?2.2.2 怎么给变量起名?2.2.3 变量的类型🎨 整数 int🎨 浮点数(小数&…...
【RPC】Apache Thrift系列详解 - 概述与入门
文章目录前言正文Thrift的技术栈Thrift的特性(一) 开发速度快(二) 接口维护简单(三) 学习成本低(四) 多语言/跨语言支持(五) 稳定/广泛使用Thrift的数据类型Thrift的协议Thrift的传输层Thrift的服务端类型Thrift入门示例(一) 编写Thrift IDL文件(二) 新建Maven工程总结前言 Th…...
class03:MVVM模型与响应式原理
目录一、MVVM模型二、内在1. 深入响应式原理2. Object.entries3. 底层搭建一、MVVM模型 MVVM,即Model 、View、ViewModel。 Model > data数据 view > 视图(vue模板) 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安装教程
✅作者简介:CSDN一位小博主,正在学习前端 📃个人主页:白月光777的CSDN博客 💬个人格言:但行好事,莫问前程 安装VS CodeVS Code简介VS Code安装VS Code汉化结束语💡💡&…...
【Hive进阶】-- Hive SQL、Spark SQL和 Hive on Spark SQL
1.Hive SQL 1.1 基本介绍概念Hive由Facebook开发,用于解决海量结构化日志的数据统计,于2008年贡献给 Apache 基金会。Hive是基于Hadoop的数据仓库工具,可以将结构化数据映射为一张表,提供类似SQL语句查询功能本质:将Hi…...
搭建自己的直播流媒体服务器SRS,以及SRS+OBS直播推拉流使用及配置
一、前言 目前,全球直播带货什么的,成为主流,那如何自己搭建一个直播服务器呢。首先需要一个流媒体服务器,搭建流媒体有很多种方式,如下: 流媒体解决方案 Live555 (C)流媒体平台框…...
Node.js-----使用express写接口
使用express写接口 文章目录使用express写接口创建基本的服务器创建API路由模块编写GET接口编写POST接口CROS跨域资源共享1.接口的跨域问题2.使用cros中间件拒绝跨域问题3.什么是cros4.cros的注意事项5.cros请求的分类JSONP接口1.回顾jsonp的概念和特点2.创建jsonp接口的注意事…...
【Linux修炼】16.共享内存
每一个不曾起舞的日子,都是对生命的辜负。 共享内存一.共享内存的原理二.共享内存你的概念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基础命令大全(上)
♥️作者:小刘在C站 ♥️个人主页:小刘主页 ♥️每天分享云计算网络运维课堂笔记,努力不一定有收获,但一定会有收获加油!一起努力,共赴美好人生! ♥️夕阳下,是最美的绽放࿰…...
嵌入式 串口通信
目录 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语言函数调用栈
栈溢出(stack overflow)是最常见的二进制漏洞,在介绍栈溢出之前,我们首先需要了解函数调用栈。 函数调用栈是一块连续的用来保存函数运行状态的内存区域,调用函数(caller)和被调用函数…...
【高阶数据结构】红黑树
文章目录1. 使用场景2. 性质3. 结点定义4. 结点旋转5. 结点插入1. 使用场景 Linux进程调度CFSNginx Timer事件管理Epoll事件块的管理 2. 性质 每一个节点是红色或者黑色根节点一定是黑色每个叶子节点是黑色如果一个节点是红色,那么它的两个儿子节点都是黑色从任意…...
网络协议分析期末复习(二)
目录 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事务详解
🏆今日学习目标: 🍀Spring事务和MySQL事务详解 ✅创作者:林在闪闪发光 ⏰预计时间:30分钟 🎉个人主页:林在闪闪发光的个人主页 🍁林在闪闪发光的个人社区,欢迎你的加入: …...
ChatGPT背后的技术和多模态异构数据处理的未来展望——我与一位资深工程师的走心探讨
上周,我和一位从业三十余年的工程师聊到ChatGPT。 作为一名人工智能领域研究者,我也一直对对话式大型语言模型非常感兴趣,在讨论中,我向他解释这个技术时,他瞬间被其中惊人之处所吸引🙌,我们深…...
iOS-砸壳篇(两种砸壳方式)
CrackerXI砸壳呢,当时你要是使用 frida-ios-dump 也是可以的; https://github.com/AloneMonkey/frida-ios-dump frida-ios-dump: 代码中需要更改的:手机中的内网ip 密码 等 最后放到我的砸壳路径里: python dump.py -l查看应用…...
linux 基础
1.Shell 命令的格式如下:command -options [argument]command: Shell 命令名称。options: 选项,同一种命令可能有不同的选项,不同的选项其实现的功能不同。argument: Shell 命令是可以带参数的,也可以不带参…...
Java:SpringBoot给Controller添加统一路由前缀
网上的文章五花八门,不写SpringBoot的版本号,导致代码拿来主义不好使了。 本文采用的版本 SpringBoot 2.7.7 Java 1.8目录1、默认访问路径2、整个项目增加路由前缀3、通过注解方式增加路由前缀4、按照目录结构添加前缀参考文章1、默认访问路径 packag…...
Java 基于 JAVE 库 实现 视频转音频的批量转换
文章目录 Java 基于 JAVE 库 实现 视频转音频的批量转换Maven:方案一:代码优化:方案二:示例代码:代码优化:结语Java 基于 JAVE 库 实现 视频转音频的批量转换 实现视频转音频的功能需要使用到一个第三方的 Java 库,叫做 JAVE。JAVE 是一个开源的 Java 库,提供了视频和音频转换…...
Spring容器——基于XML注入
1. 容器:IOC IoC 是 Inversion of Control 的简写,译为“控制反转”,它不是一门技术,而是一种设计思想,是一个重要的面向对象编程法则,能够指导我们如何设计出松耦合、更优良的程序 Spring 通过 IoC 容器来…...
设计模式(二十一)----行为型模式之状态模式
1 概述 【例】通过按钮来控制一个电梯的状态,一个电梯有开门状态,关门状态,停止状态,运行状态。每一种状态改变,都有可能要根据其他状态来更新处理。例如,如果电梯门现在处于运行时状态,就不能…...
一分钟理解 AP(Affinity Propagation) 亲和⼒传播算法
从来没有一个算法让我研究好几天都搞不明白,AP算法算是第一个。弄了好几天,打草纸用了几十页,反复琢磨,最后都怀疑人生了。我觉得网上那么多介绍 AP 的文章,基本上没有一篇能讲明白的。最后我都觉得 AP 的作者可能都没…...
使用mybatis的映射文件操作存储过程
先随便创建一个存储过程 DELIMITER $$ CREATE PROCEDURE getUserNameById (IN i_id BIGINT, OUT o_name VARCHAR(10)) BEGINSELECT u.name INTO o_name FROM tb_user u WHERE id i_id; END $$delimiter $$ : 是将sql语句的结束符号先替换成$$的意思,因为sql是遇到…...
世界上最完美的两个软件,太厉害了!
今天给大家介绍两个软件,一个体现了人类在软件开发流程上的极致,另外一个则体现了程序员个体能力的巅峰。01航天飞机飞控软件先来说第一个,航天飞机飞行控制软件,就是下图这个大家伙。航天飞机重达120吨,还携带着2000吨…...
暴雪网易2023后不代理了/seo外包费用
查看自己的ip和采用什么方式上网(网通/电信)http://www.whatchina.com/html/sip.asp本文转自 xcf007 51CTO博客,原文链接:http://blog.51cto.com/xcf007/161180,如需转载请自行联系原作者...
微信网站建设/宁波seo外包哪个品牌好
随着社交媒体的发展,Instagram已成为品牌和营销者的首选平台之一。在2023年,Instagram仍将是品牌营销和网红营销的热点。本期Nox聚星将给大家详细介绍下2023年Instagram网红营销的发展趋势。 1、网红营销需求持续增长 Instagram上网红营销的需求不断增…...
网站运维工作内容/长安网站优化公司
贵阳中职计算机专业学校就找贵阳重点中职学校。 不上高中怎么办?首先,如果初三没有考上高中,一定不要出去打工,初中毕业也就十五六岁的年纪,没有技能、没有学历,更没有社会经验,如果此时过早的进…...
网站设计宽度/谷歌优化推广
运行Oracle 11g下的setup.exe 配置安全更新 安装选项 系统类 典型安装 检查系统条件 概要 安装 创建数据库 数据库口令管理 解锁Scott用户并设置密码,完成 连接(打开sql plus,或其他数据库管理工具,例如navicat) 关闭…...
h5网站建设价格/网络营销心得体会300字
基于Cesium的材质线插件,引入即可使用,需要的自取。 插件地址:传送门 在线访问: 查看地址 使用 // 自定义纹理材质let MaterialLineImage [./src/line.png,./src/line2.png,./src/line3.png,]// colorlet colors [new Cesium.Color(77 …...
公司为什么建立网站/整合营销策略有哪些
关于讲理老公:你不讲理。老婆:和你我从来就没讲过理,家就不是讲理的地方。再说你是男的,还比我大8个月呢,你就得让着我。关于钱老公:以后我挣的钱,按比例给你吧,我挣的多时留得也多一…...