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

继续学c++

由于c++里面有很多和c语言很像的东西,这里就来总结一点不像的或者要注意的,或者是我已经快忘记的;

先来一个浮点型也就是实型类型的总结;

知道浮点型有这两个类型:float和double型;

然后float型占四个字节,精度为7位有效数字(注意有效数字不只是小数点后面的,是整个数有多少位),double占八个字节精度为15~16位有效数字;然后我心血来潮地用这两个类型来输出3.1415926以显示它们的区别;但是

#include<iostream>
using namespace std;
int main()
{float f1 = 3.1415926;double f2= 3.1415926;cout << f1 << endl << f2 << endl;system("pause");return 0;
}

后来知道,原来一般情况下,输出一个小数只会输出六位有效数字,不管哪种类型QAQ;

还有一点要注意的是:

默认情况下,编译器将小数当作双精度类型,也就是精度更高的double类型;所以在定义一个float型变量给它赋值小数的时候,这时候,那个小数其实是双精度,编译器会先将它转换为单精度类型再进行赋值操作(不同类型的是不可以赋值的);所以这里有一个小技巧同时也是为了看懂这个句子:

float f=3.12f;

不会吧不会吧不会有人会认为这里的f是同一个f吧,不会还有人差点要把它约掉吧,(说的就是自己);其实这里就是定义一个变量名为f的float变量给他赋值3.12;这个小数后面加了个f指的是编译器刚开始就将它当作了单精度,从而不需要在定义的时候多一步转换;(然后我又试了一下,会不会在小数的后面加一个d就是直接认为单精度呢?然后就报错了,现在想想也是,刚开始编译器就已经把小数当作双精度类型了,还要转换什么吗?);

然后还了解一个科学计数法:

在c语言里面

有时候由于一个数太大或者太小很麻烦,这时候如果这个数里面有这样的特点就可以用科学计数法:

某个数后面有很多个连续的零,小数点后面有很多连续的零:形如:

1230000000;

0.000004;

这时候就可以用科学计数法写成1.23e9;2e-6;也就是在e后面为正的话e后面几个零就相当于10的几次方,而为负的话就是相当于0.1的几次方,但是在一定限度下,计算机打印会自动将科学计数法转换为正常的形式,但是如果超过一定限度,就会直接显示(如果是正数就还会再加一个加号),只不过还可以正常加减,但是这在超过一定限度连正常加减都不可以了(其实不是不可以,只是显示错误,好像和位运算什么的有关,暂时不深入);

下面可以验证:

#include<iostream>
using namespace std;
int main()
{float f1 = 3e-6;float f2 = 3e-5;double f3 = 3e-5;double f4 = 3e-6;float f5 = 3e-4;double f6 = 3e-4;cout << f1 <<endl<<f1+1<< endl<<f2<<endl << f2+1<< endl;cout << f3 << endl << f3 + 1 << endl << f4<< endl << f4 + 1 << endl;cout << f5 << endl << f5 + 1 << endl << f6 << endl << f6 + 1 << endl;system("pause");return 0;
}

结果是这样的:

可以发现在科学计数法里面

 然后再来看正数:也就是把刚刚的代码的负号去掉

这就很那个只打印六个有效数字一样,而之所以超过了那个限度,但是又没有到double的限度为什么不能计算出正确答案,好像涉及一个比较深入的知识(打印的时候位转换),这里我只是想提醒一下自己 ;如果这个是正的话,可以用整型,范围可能比这个要大一点:最大可以弄到它的最大范围;(虽然有时候整型打印也会出现打印的字节地方出错,但是这里没有问题);

然后再来复习一下字符类型:

字符类型char,占用一个节点,且字符型变量并不是将字符本身放进内存,而是将其对应的ASCII码放进内存,当然,还有转换等后续操作;字符型变量用单引号;在ASCII码中0~31给了控制字符,32~126才给课可以显示的字符;还有就是两个要记得:a的ASCII码是97,A是65

再来介绍几个比较重要的转义字符:

//这个表示注释;也就是可以让编译器忽略它后面的一整行

\\这个表示斜杠在c和c++里面想要打印斜杠,只用一个是会报错的,也就是说,编程里面,编译器看见一个斜杠就会开始之后要有转义字符出现了,像\n是换行,但是单个n只是一个字母,这里\n在c++里面的作用和endl类似,都是换行,但是输出的方式不一样;所以可以把单个斜杠认为一个信号,所以要输出斜杠的话,在变成里面就应该用两个,这时候我就想到了这个:

也就是说,在编译器的认知,我只是向输出一个斜杠一个引号也就是/“ 而且还少打一个引号用来输出,还是看代码更好理解;

 

也就是说在中文里面,除了字符,其他符号想要正常输出,都要加一个斜杠 ; 

然后就是一些换行符:这里换行符的作用和endl(虽然我这个也不是很明白,先只浅浅了解一下)一样,只是方式不一样:

#include<iostream>
#include<string>
using namespace std;
int main()
{cout << "hello\n";cout << "hello" << endl;cout << "hello";system("pause");return 0;
}

 还有一个水平制表符\t;之前都只知道它可以让格式变整齐,现在才知道其实它是这样的原理:

对于数字数字或者字符都认定为8的倍数为一个整体,剩余的都用空格来添上,这样不仅可以尽量使数据变得很整齐,还可以让我们想输出一组数,又懒得打空格的时候方便使用:

#include<iostream>
#include<string>
using namespace std;
int main()
{cout << "hello\t123456\tfsfsfsfssf\t"<<endl;cout << "hello434\teqefec\tdfsfs\t"<<endl;system("pause");return 0;
}

这里来浅浅解释一下这个,刚开始hello是5个地方,所以剩下三个空格打印出来到它后面,123456占6个地方后面还有两个地方但因为空格,然后fsfsfsfssf占了十个地方,这时候八个已经不能满足它了,所以扩充为16个,剩下6个地方打印为空格,这里后面因为没有了,所以不明显;下面的就懒得分析了。。。 

这里再介绍一个类型string,字符串型,也就是每次要用这个之前记得加上头文件#include<string>这里它的位置没有特别要求,可以放在#include<iostream>下面也可以是上面,在using namespace std;上面下面都可以;当然这里说的随便还是要符合正常头文件放的位置;然后就是它的应用实例:

#include<iostream>
#include<string>
using namespace std;
int main()
{string s = "hello";cout << s << endl;system("pause");return 0;
}

 

正常打印出来了; 

别在年轻的时候, 吃得最胖,活得最懒,爱得最傻, 一生中最好的年轻, 都是一晃而过的,愿你能用心享受它。

相关文章:

继续学c++

由于c里面有很多和c语言很像的东西&#xff0c;这里就来总结一点不像的或者要注意的&#xff0c;或者是我已经快忘记的&#xff1b; 先来一个浮点型也就是实型类型的总结&#xff1b; 知道浮点型有这两个类型&#xff1a;float和double型&#xff1b; 然后float型占四个字节…...

Day949.遗留系统之殇:为什么要对遗留系统进行现代化? -遗留系统现代化实战

遗留系统之殇&#xff1a;为什么要对遗留系统进行现代化&#xff1f; Hi&#xff0c;我是阿昌&#xff0c;今天学习记录是关于遗留系统之殇&#xff1a;为什么要对遗留系统进行现代化&#xff1f;的内容。 不知道你是否跟曾经一样&#xff0c;身处一个遗留系统的漩涡之中&…...

DAY 45 Nginx服务配置

Nginx概述 Nginx&#xff1a; Nginx 是开源、高性能、高可靠的 Web 和反向代理服务器&#xff0c;而且支持热部署&#xff0c;几乎可以做到 7 * 24 小时不间断运行&#xff0c;即使运行几个月也不需要重新启动&#xff0c;还能在不间断服务的情况下对软件版本进行热更新。 对…...

如何收集K8S容器化部署的服务的日志?

做开发的同学都知道日志的重要性&#xff0c;日志的种类一般有接口日志、错误日志、关键步骤日志、用户操作日志等。本文主要详细讲解使用kubernetes容器化部署的服务该如何记录和收集日志。 一、使用标准输出方式 将想要记录的日志内容输出到stdout或stderr即可&#xff08;…...

python删除csv文件中的某几列或行

1. 读取数据 用pandas中的read_csv()函数读取出csv文件中的数据: import pandas as pddf pd.read_csv("comments.csv") df.head(2)用drop函数进行文件中数据的删除行或者删除列操作。 2. 删除列操作 方法一&#xff1a;假设我们要删除的列的名称为 ‘观众ID’,‘…...

Redis持久化机制导致服务自启动后恢复数据过长无法使用以及如何关闭

场景 若依前后端分离版手把手教你本地搭建环境并运行项目&#xff1a; 若依前后端分离版手把手教你本地搭建环境并运行项目_霸道流氓气质的博客-CSDN博客 在上面搭建前后端分离的项目后&#xff0c;如果需要在windows服务上进行部署。 若依前后端分离版本&#xff0c;Windo…...

DAY 37 shell免交互

Here Document 概述 常用的交互程序&#xff1a;read&#xff0c;ftp&#xff0c;passwd&#xff0c;su&#xff0c;sudo cat也可配合免交互的方式重定向输出到文件 Here Document 的作用 使用I/O重定向的方式将命令列表提供给交互式程序标准输入的一种替代品 格式 命令 …...

用python脚本从Cadence导出xdc约束文件

用python脚本从Cadence导出xdc约束文件 概述转换方法先导出csv文件修改CSV文件 CSV转XDC检查输出XDC文件csv2xdc源代码下载 概述 在Cadence设计完成带有FPGA芯片的原理图的时候&#xff0c;往往需要将FPGA管脚和网络对应关系导入vivado设计软件中&#xff0c;对于大规模FPGA管…...

【C++ 六】内存分区、引用

内存分区、引用 文章目录 内存分区、引用前言1 内存分区模型1.1 程序运行前1.2 程序运行后1.3 new 操作符 2 引用2.1 引用基本使用2.2 引用注意事项2.3 引用做函数参数2.4 引用做函数返回值2.5 引用本质2.6 常量引用 总结 前言 本文包含内存分区、引用基本使用、引用注意事项、…...

markdown基本语法

来自神秘人儿的投稿&#xff01; markdown的使用&#xff0c;可以参考https://markdown.com.cn/basic-syntax/ 标题&#xff1a;用 # 表示 段落&#xff1a;enter即可&#xff0c;两端之间有一个空行 换行&#xff1a;一行的末尾加两个或者多个空格&#xff0c;两端之间没有…...

第十篇 Spring 集成Redis

《Spring》篇章整体栏目 ————————————————————————————— 【第一章】spring 概念与体系结构 【第二章】spring IoC 的工作原理 【第三章】spring IOC与Bean环境搭建与应用 【第四章】spring bean定义 【第五章】Spring 集合注入、作用域 【第六章】…...

PADS-LOGIC项目原理图设计

最小板原理图设计 目录 1 菜单与工具使用 2 常用设置 2.1选项卡 2.2 图纸设置 2.3 颜色设置 3 设计技巧 3.1 模块化设计思路 3.2 元件放置 3.3 走线及连接符 4 原理图绘制 4.1 POWER原理图设计 4.2 MCU原理图设计 4.2.1晶振电路 4.2.2复位电路 4.2.3 BOOT电路 …...

36岁大龄程序员被裁,找了2个月工作,年包从100万降到50万,要不要接?

为了找到工作&#xff0c;你愿意接受降薪多少&#xff1f; 一位36岁的杭州程序员问&#xff1a; 36岁被裁&#xff0c;找了2个月工作&#xff0c;年包从100万降到50万&#xff0c;真心纠结&#xff0c;要不要接&#xff1f; 网友们分成了旗帜鲜明的两派&#xff0c;一派人认为不…...

Android Retrofit 源码分析

1、简介 Retrofit 是一种基于 Java 的 RESTful Web Service 客户端库&#xff0c;它可以将网络请求抽象出来并支持多种转换器&#xff0c;可以将 JSON、XML 和其他格式的响应数据自动转换为 Java 对象。Retrofit 通过注解的方式来描述 REST API 调用&#xff0c;使开发人员能够…...

CDN如何阻止网络攻击

随着网络技术的发展&#xff0c;网络攻击事件也越来越多&#xff0c;对企业和个人的安全和稳定造成严重威胁。为此&#xff0c;高防CDN应运而生&#xff0c;成为广大用户保障网络安全的重要工具。什么是高防CDN?高防CDN的特点有哪些?高防CDN如何阻止网络攻击?接下来让我们一…...

Mybatis-Plus -04 条件构造器与代码生成器

Mybatis-Plus--条件构造器与代码生成器 1 条件构造器1.1 > < 1.2 in notin1.3 between...1.4 orderBy...1.5 like... 2 代码生成器2.1 引入依赖2.2 生成器代码 1 条件构造器 通过条件构造器可以更加轻松的完成条件查询与更新(底层就是动态SQL) 1.1 > < ge 小于 &l…...

MapReduce高级篇——全局计数器

MapReduce Counter 计数器 概念 在执行MapReduce程序的时候&#xff0c;控制台输出日志中通常下面片段&#xff0c;可以发现输出信息中的核心词是counter,中文叫做计数器 在执行MapReduce城西过程中&#xff0c;许多时候&#xff0c;用户希望了解程序的运行情况&#xff0c;H…...

轻松掌握K8S目录持久卷PV/PVC的kubectl操作知识点04

1、介绍 在docker中可以将容器中的目录挂载出来&#xff0c;在k8s中pod可以部署在不同节点&#xff0c;假如该节点的机器宕机了&#xff0c;k8s可能就会将此Pod转移到其他机器&#xff0c;就不是原先的机器了。k8s有自己的一套挂载方案&#xff0c;如下图所示&#xff0c; 原…...

Appuploader证书申请教程

转载&#xff1a;IOS证书制作教程 点击苹果证书 按钮 点击新增 输入证书密码&#xff0c;名称 这个密码不是账号密码&#xff0c;而是一个保护证书的密码&#xff0c;是p12文件的密码&#xff0c;此密码设置后没有其他地方可以找到&#xff0c;忘记了只能删除证书重新制作&…...

acwing17给了一个头节点,从尾到头输出链表的元素,顺便练练容器

方法一 建立一个数组&#xff0c;从头到尾遍历一遍链表&#xff0c;然后将链表的每个元素的值赋给数组 犯了一个错误 新建的vector容器是一个可变长的数组&#xff0c;要想像数组下标那样访问前提是这个下标所指向的元素得存在&#xff0c;这也就跟那个声明一维数组得写出长度来…...

React Native 开发环境搭建(全平台详解)

React Native 开发环境搭建&#xff08;全平台详解&#xff09; 在开始使用 React Native 开发移动应用之前&#xff0c;正确设置开发环境是至关重要的一步。本文将为你提供一份全面的指南&#xff0c;涵盖 macOS 和 Windows 平台的配置步骤&#xff0c;如何在 Android 和 iOS…...

涂鸦T5AI手搓语音、emoji、otto机器人从入门到实战

“&#x1f916;手搓TuyaAI语音指令 &#x1f60d;秒变表情包大师&#xff0c;让萌系Otto机器人&#x1f525;玩出智能新花样&#xff01;开整&#xff01;” &#x1f916; Otto机器人 → 直接点明主体 手搓TuyaAI语音 → 强调 自主编程/自定义 语音控制&#xff08;TuyaAI…...

【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分

一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计&#xff0c;提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合&#xff1a;各模块职责清晰&#xff0c;便于独立开发…...

HDFS分布式存储 zookeeper

hadoop介绍 狭义上hadoop是指apache的一款开源软件 用java语言实现开源框架&#xff0c;允许使用简单的变成模型跨计算机对大型集群进行分布式处理&#xff08;1.海量的数据存储 2.海量数据的计算&#xff09;Hadoop核心组件 hdfs&#xff08;分布式文件存储系统&#xff09;&a…...

C#中的CLR属性、依赖属性与附加属性

CLR属性的主要特征 封装性&#xff1a; 隐藏字段的实现细节 提供对字段的受控访问 访问控制&#xff1a; 可单独设置get/set访问器的可见性 可创建只读或只写属性 计算属性&#xff1a; 可以在getter中执行计算逻辑 不需要直接对应一个字段 验证逻辑&#xff1a; 可以…...

Go 并发编程基础:通道(Channel)的使用

在 Go 中&#xff0c;Channel 是 Goroutine 之间通信的核心机制。它提供了一个线程安全的通信方式&#xff0c;用于在多个 Goroutine 之间传递数据&#xff0c;从而实现高效的并发编程。 本章将介绍 Channel 的基本概念、用法、缓冲、关闭机制以及 select 的使用。 一、Channel…...

CRMEB 中 PHP 短信扩展开发:涵盖一号通、阿里云、腾讯云、创蓝

目前已有一号通短信、阿里云短信、腾讯云短信扩展 扩展入口文件 文件目录 crmeb\services\sms\Sms.php 默认驱动类型为&#xff1a;一号通 namespace crmeb\services\sms;use crmeb\basic\BaseManager; use crmeb\services\AccessTokenServeService; use crmeb\services\sms\…...

从 GreenPlum 到镜舟数据库:杭银消费金融湖仓一体转型实践

作者&#xff1a;吴岐诗&#xff0c;杭银消费金融大数据应用开发工程师 本文整理自杭银消费金融大数据应用开发工程师在StarRocks Summit Asia 2024的分享 引言&#xff1a;融合数据湖与数仓的创新之路 在数字金融时代&#xff0c;数据已成为金融机构的核心竞争力。杭银消费金…...

基于鸿蒙(HarmonyOS5)的打车小程序

1. 开发环境准备 安装DevEco Studio (鸿蒙官方IDE)配置HarmonyOS SDK申请开发者账号和必要的API密钥 2. 项目结构设计 ├── entry │ ├── src │ │ ├── main │ │ │ ├── ets │ │ │ │ ├── pages │ │ │ │ │ ├── H…...

热烈祝贺埃文科技正式加入可信数据空间发展联盟

2025年4月29日&#xff0c;在福州举办的第八届数字中国建设峰会“可信数据空间分论坛”上&#xff0c;可信数据空间发展联盟正式宣告成立。国家数据局党组书记、局长刘烈宏出席并致辞&#xff0c;强调该联盟是推进全国一体化数据市场建设的关键抓手。 郑州埃文科技有限公司&am…...