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

C++教程 - How to C++系列专栏第3篇

关于专栏

这个专栏是优质的C++教程专栏,如果你还没看过第0篇,点击C++教程 - How to C++系列专栏第0篇去第0篇

本专栏一致使用操作系统:macOS Ventura,代码编辑器:CLion,C++编译器:Clang

感谢一路相伴的朋友们,感谢你们的支持 ^ _ ^

博主反馈非常及时,如果你在阅读的时候遇到问题,可以直接在评论区提问,博主看到后会在24小时内给你反馈

C++教程 - How to C++系列专栏第3篇


目录

关于专栏

更新记录

2023年8月10日

前言

声明变量

为什么要声明变量

声明放在代码哪里?

 赋值语句

=

-

cout

结语

快捷翻页

本文参考文章,书籍


更新记录

2023年8月10日

发布第一篇文章


前言

C++的语句是什么?变量为什么要声明?变量声明的代码放到程序的哪里比较好?赋值语句是什么?为什么选cout?printf不好吗?


C++程序是一组函数,函数是由语句构成的,C++有很多语句,那么下面我们先来看一段程序介绍他们

cout_3blog.cpp

#include <iostream>int main(void)
{using namespace std;int paper; // blog:定义变量paper = 20;  // blog:赋值运算符cout << "I have" ; // blog:空格cout << paper;cout << " Composition papers.";cout << endl;paper = paper - 2; // blog:运算cout << "Blog time!";cout << endl;cout << "Now I hava ";cout << paper;cout << " Composition papers. ";cout << endl;return 0;
}

声明变量

如果要把信息存储到计算机中,则必须要指出信息存放位置和所需的内存空间,C++中有一种简单的方法,就是声明,指出存储类型和位置标签,比如上面程序的第7行,我们把注释去掉就是这样:

int paper;

 int表示整型,编译器会分配其内存大小和详细信息,int是基础的数据类型,表示整数,即不含有小数部分,可以为正也可以为负,大小范围取决于C++的实现,之后我们会详细讲解这个部分

paper表示其在内存单元中的标签,它被称为变量,表示它是可以被不断更改的,paper就可以理解为它的代号或者标签,这个程序中可以使用paper来操作内存中的值

为什么要声明变量

有些语言(比如CPython)的变量就不需要声明,而C++为什么非要声明一下变量呢?

我们举个例子,比如程序员可能编写下面的Python语句

hello_v1 = 123
...
...
...
hallo_v1 = hello_v1 + hello_v2
...
...
...
print(hello_v1)

我们可以发现hallo是拼写错误,,这种情况下运行并不能达到将变量hello_v1加上hello_v2后输出的结果,也很难在大型程序中的成千上万的支付中判断为什么出现了这种问题,而C++“声明后使用”在这时便起了作用,假如编译器发现hallo_v1没有声明过,则会直接报错,比如下面就是一个会导致编译器报错的例子:

clang_variables_declaration_error.cpp

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

clang报错如下:

clang_variables_declaration_error.cpp:6:13: error: use of undeclared identifier 'a'cout << a;^
1 error generated.

 翻译:

clang_variables_declaration_error.cpp:6:13:错误:使用未声明的标识符'a'

cout << a;

               ^

1 .产生错误。

声明放在代码哪里?

如果你熟悉C,你可能知道C语言的变量声明都要求在函数或过程的开头部分,但其实C++并没有这个要求,只要你放在使用的前面即可,当然这可能不能一目了然看出哪些函数使用了哪些变量


 赋值语句

=

我们可以看到程序中有一段赋值语句:

paper = 20;

=被称作赋值运算符

在Microsoft Learn中的解释是:

将第二个操作数的值存储在由第一个操作数指定的对象中(简单赋值)

第二个操作数第一个操作数是什么东西?我们来看一段代码

v = 1;

这其中v就是第一操作数,1就是第二操作数,理解了吧

C++中有一种很好玩的用法:

int v1;
int v2;
int v3;
int v3;
v3 = v2 = v1 = 456

赋值运算从左到右进行,456首先被赋值给v1,然后给v2,最后给v3

-

其实除了=,-也是赋值运算符,在上面的程序中我们能看到这样的代码:

paper = paper - 2;

其中paper被赋值了自己原先的值减二,是不是有点绕,我来解释一下

你有一个外号叫paper,真实的名字叫20,后面呢你改名了,把名字改少了2,然后把20-2的这个名字赋予了自己。


cout

我们看到上面的程序中这段代码:

cout << paper;

并没有输出“paper”字符串,而是输出了它的值20,其实cout是把两个操作合并了起来,cout先把paper替换成了 20,然后转换输出字符

cout可以作用于字符串和数字,但大家不要忘记,整数20和字符串“20”有天壤之别,字符串是书写该数字是用到的字符2和5,而数字则是把20整体存储为字符,之后我们在将数据类型的时候会着重讲解

它和C的区别就在于cout的聪明程度,在C中要输出整数20和字符串“20”需要这么做:

printf("String: %s\n", "20");
printf("integer: %d\n", "20");

不光复杂,还必须要用%s和%n来区分字符串和整数,假如你要求它输出字符串,但你输入了个整数,printf不够精密,发现不了错误,于是就会执行下去,输出一堆乱码 


结语

作者会经常帮助有问题的小伙伴解决问题如果你有问题,可以直接到评论区指出,作者会在看到后到24小时内给予答复

如果本文有任何问题欢迎在评论去指出,如果喜欢这篇文章,希望能点赞评论关注

如果你们身边有像你提起过这个领域的,或者希望可以和ta一起进步的,把分享给ta吧

2657字,9个父项,5个子项


快捷翻页

第0篇

第1篇

第2篇


本文参考文章,书籍

参考文章

如果说Python中变量是标签(不是盒子),那这个变量名会占内存吗? - 知乎

赋值运算符 | Microsoft Learn

参考书籍

C++ Primer Plus

相关文章:

C++教程 - How to C++系列专栏第3篇

关于专栏 这个专栏是优质的C教程专栏&#xff0c;如果你还没看过第0篇&#xff0c;点击C教程 - How to C系列专栏第0篇去第0篇 本专栏一致使用操作系统&#xff1a;macOS Ventura&#xff0c;代码编辑器&#xff1a;CLion&#xff0c;C编译器&#xff1a;Clang 感谢一路相伴…...

使用Edge和chrom扩展工具(GoFullPage)实现整页面截图或生成PDF文件

插件GoFullPage下载&#xff1a;点击免费下载 如果在浏览网页时&#xff0c;有需要整个页面截图或导出PDF文件的需求&#xff0c;这里分享一个Edge浏览器的扩展插件&#xff1a;GoFullPage。 这个工具可以一键实现页面从上到下滚动并截取。 一、打开“管理扩展”&#xff08;…...

image has dependent child images

问题&#xff1a;很多none的镜像无法被删除 解决过程&#xff1a; 1、通过 docker image prune -f 提示可删除为 0 2、直接进行删除报错&#xff1a; docker rmi 8f5116cbc201Error response from daemon: conflict: unable to delete 8f5116cbc201 (cannot be forced) - im…...

Linux系统中基于NGINX的代理缓存配置指南

作为一名专业的爬虫程序员&#xff0c;你一定知道代理缓存在加速网站响应速度方面的重要性。而使用NGINX作为代理缓存服务器&#xff0c;能够极大地提高性能和效率。本文将为你分享Linux系统中基于NGINX的代理缓存配置指南&#xff0c;提供实用的解决方案&#xff0c;助你解决在…...

openCV项目开发实战--详细介绍如何改善夜间图像的照明(附python和C++源码)

文末附完整的代码实现下载链接 介绍 对于非摄影师来说,在光线不佳的条件下拍出好照片似乎很神奇。完成低光摄影需要技巧、经验和正确的设备的结合。在弱光下拍摄的图像缺乏色彩和独特的边缘。它们还遭受能见度差和深度未知的困扰。这些缺点使得此类图像不适合个人使用或图像处…...

rabbitmq的消息应答

消费者完成一个任务可能需要一段时间&#xff0c;如果其中一个消费者处理一个长的任务并仅只完成 了部分突然它挂掉了&#xff0c;会发生什么情况。RabbitMQ 一旦向消费者传递了一条消息&#xff0c;便立即将该消 息标记为删除。在这种情况下&#xff0c;突然有个消费者挂掉了…...

如何重置树莓派 Pico(重置外围设备失败)

有时候需要重置树莓派 Pico&#xff0c;一种方法是按住 Pico 上的“BOOTSEL”按钮再插入 USB&#xff1b;或者用按钮连接“RUN”和“GND”针脚&#xff0c;然后同时按下这个按钮和“BOOTSEL”按钮。这样就可以进入 USB 模式&#xff0c;这样从一定程度进行了重置。 但是这种方…...

LaWGPT基于中文法律知识的大语言模型_初步安装

准备代码&#xff0c;创建环境 # 下载代码 git clone gitgithub.com:pengxiao-song/LaWGPT.git cd LaWGPT# 创建环境 conda create -n lawgpt python3.10 -y conda activate lawgpt国内网络环境问题。你可以把requirements.txt里面的github.com替换成kgithub.com&#xff08;这…...

一文学会sklearn中的交叉验证方法,cross_validate和KFlod实战案例

前言 在机器学习中&#xff0c;我们经常需要评估模型的性能。而为了准确评估模型的性能&#xff0c;我们需要使用一种有效的评估方法。五折交叉验证&#xff08;5-fold cross-validation&#xff09;就是其中一种常用的模型评估方法&#xff0c;用于评估机器学习模型的性能和泛…...

《面试1v1》ElasticSearch倒排索引

&#x1f345; 作者简介&#xff1a;王哥&#xff0c;CSDN2022博客总榜Top100&#x1f3c6;、博客专家&#x1f4aa; &#x1f345; 技术交流&#xff1a;定期更新Java硬核干货&#xff0c;不定期送书活动 &#x1f345; 王哥多年工作总结&#xff1a;Java学习路线总结&#xf…...

基于架构的软件开发方法

基于架构的软件开发方法 基于架构的软件开发方法是由架构驱动的&#xff0c;即指由构成体系结构的商业、质量和功能需求的组合驱动的。使用ABSD 方法&#xff0c;设计活动可以从项目总体功能框架明确就开始&#xff0c;这意味着需求抽取和分析还没有完成(甚至远远没有完成)&am…...

实战篇之基于二进制思想的用户标签系统(Mysql+SpringBoot)

一&#xff1a; 计算机中的二进制 计算机以二进制表示数据&#xff0c;以表示电路中的正反。在二进制下&#xff0c;一个位只有 0 和 1 。逢二进一 位。类似十进制下&#xff0c;一个位只有 0~9 。逢十进一位。 二&#xff1a; 进制常用运算 &#xff08;位运算&#xff09;…...

Ansible 进阶

Ansible 进阶 ⤴️Ansible 入门看这篇文章⤵️Ansible 实战看这篇文章 一.Ansible 中的 Playbook 1.1 Playbook 介绍 如下图&#xff0c;ansible 在整个管理过程中使用 playbook 的大体流程。 Playbook 中包含多个 role&#xff0c;每个 role 对应于在远程主机完成某个比较复…...

滴滴Ceph分布式存储系统优化之锁优化

摘自&#xff1a;https://mp.weixin.qq.com/s/oWujGOLLGItu1Bv5AuO0-A 2020-09-02 21:45 0.引言 Ceph是国际知名的开源分布式存储系统&#xff0c;在工业界和学术界都有着重要的影响。Ceph的架构和算法设计发表在国际系统领域顶级会议OSDI、SOSP、SC等上。Ceph社区得到Red Hat…...

flutter开发实战-MethodChannel实现flutter与iOS双向通信

flutter开发实战-MethodChannel实现flutter与iOS双向通信 最近开发中需要iOS与flutter实现通信&#xff0c;这里使用的MethodChannel 如果需要flutter与Android实现双向通信&#xff0c;请看 https://blog.csdn.net/gloryFlow/article/details/132218837 这部分与https://bl…...

华为、阿里巴巴、字节跳动 100+ Python 面试问题总结(七)

系列文章目录 个人简介&#xff1a;机电专业在读研究生&#xff0c;CSDN内容合伙人&#xff0c;博主个人首页 Python面试专栏&#xff1a;《Python面试》此专栏面向准备面试的2024届毕业生。欢迎阅读&#xff0c;一起进步&#xff01;&#x1f31f;&#x1f31f;&#x1f31f; …...

K8S系列一:概念入门

写在前面 本文组织方式&#xff1a; K8S的架构、作用和目的。需要首先对K8S整体有所了解。 K8S是什么&#xff1f; 为什么是K8S&#xff1f; K8S怎么做&#xff1f; K8S的重要概念&#xff0c;即K8S的API对象。要学习和使用K8S必须知道和掌握的几个对象。 Pod 实例 Volume 数…...

QT- QLineEdite设置自动补全功能,并修改自动补全的样式

#include <QApplication> #include <QLineEdit> #include <QCompleter> #include <QStringListModel> #include <QMainWindow>int main(int argc, char *argv[]) {QApplication app(argc, argv);// 创建一个字符串列表模型QStringListModel mode…...

解决Adobe Flash Player已被屏蔽

问题&#xff1a;该插件不支持 原因&#xff1a;现在浏览器默认禁用flash 博主当前使用的是谷歌浏览器Chrome 2个主要方法都已经失效 搜索一圈后&#xff0c;之前博客给出的2个主要方法都已经失效。 1、flash.cn 下载本地播放器 2、在chrome中打开flash的禁用开关 2023年解…...

【Spring专题】Spring之Bean的生命周期源码解析——阶段二(IOC之实例化)

目录 前言阅读准备阅读指引阅读建议 课程内容一、SpringIOC之实例化1.1 简单回顾1.2 概念回顾1.3 核心方法讲解 二、方法讲解2.1 AbstractBeanFactory#getMergedLocalBeanDefinition&#xff1a;合并BeanDefinition2.2 AbstractAutowireCapableBeanFactory#createBean&#xff…...

树莓派超全系列教程文档--(62)使用rpicam-app通过网络流式传输视频

使用rpicam-app通过网络流式传输视频 使用 rpicam-app 通过网络流式传输视频UDPTCPRTSPlibavGStreamerRTPlibcamerasrc GStreamer 元素 文章来源&#xff1a; http://raspberry.dns8844.cn/documentation 原文网址 使用 rpicam-app 通过网络流式传输视频 本节介绍来自 rpica…...

【WiFi帧结构】

文章目录 帧结构MAC头部管理帧 帧结构 Wi-Fi的帧分为三部分组成&#xff1a;MAC头部frame bodyFCS&#xff0c;其中MAC是固定格式的&#xff0c;frame body是可变长度。 MAC头部有frame control&#xff0c;duration&#xff0c;address1&#xff0c;address2&#xff0c;addre…...

java 实现excel文件转pdf | 无水印 | 无限制

文章目录 目录 文章目录 前言 1.项目远程仓库配置 2.pom文件引入相关依赖 3.代码破解 二、Excel转PDF 1.代码实现 2.Aspose.License.xml 授权文件 总结 前言 java处理excel转pdf一直没找到什么好用的免费jar包工具,自己手写的难度,恐怕高级程序员花费一年的事件,也…...

大语言模型如何处理长文本?常用文本分割技术详解

为什么需要文本分割? 引言:为什么需要文本分割?一、基础文本分割方法1. 按段落分割(Paragraph Splitting)2. 按句子分割(Sentence Splitting)二、高级文本分割策略3. 重叠分割(Sliding Window)4. 递归分割(Recursive Splitting)三、生产级工具推荐5. 使用LangChain的…...

NFT模式:数字资产确权与链游经济系统构建

NFT模式&#xff1a;数字资产确权与链游经济系统构建 ——从技术架构到可持续生态的范式革命 一、确权技术革新&#xff1a;构建可信数字资产基石 1. 区块链底层架构的进化 跨链互操作协议&#xff1a;基于LayerZero协议实现以太坊、Solana等公链资产互通&#xff0c;通过零知…...

3403. 从盒子中找出字典序最大的字符串 I

3403. 从盒子中找出字典序最大的字符串 I 题目链接&#xff1a;3403. 从盒子中找出字典序最大的字符串 I 代码如下&#xff1a; class Solution { public:string answerString(string word, int numFriends) {if (numFriends 1) {return word;}string res;for (int i 0;i &…...

CMake控制VS2022项目文件分组

我们可以通过 CMake 控制源文件的组织结构,使它们在 VS 解决方案资源管理器中以“组”(Filter)的形式进行分类展示。 🎯 目标 通过 CMake 脚本将 .cpp、.h 等源文件分组显示在 Visual Studio 2022 的解决方案资源管理器中。 ✅ 支持的方法汇总(共4种) 方法描述是否推荐…...

C# 求圆面积的程序(Program to find area of a circle)

给定半径r&#xff0c;求圆的面积。圆的面积应精确到小数点后5位。 例子&#xff1a; 输入&#xff1a;r 5 输出&#xff1a;78.53982 解释&#xff1a;由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982&#xff0c;因为我们只保留小数点后 5 位数字。 输…...

永磁同步电机无速度算法--基于卡尔曼滤波器的滑模观测器

一、原理介绍 传统滑模观测器采用如下结构&#xff1a; 传统SMO中LPF会带来相位延迟和幅值衰减&#xff0c;并且需要额外的相位补偿。 采用扩展卡尔曼滤波器代替常用低通滤波器(LPF)&#xff0c;可以去除高次谐波&#xff0c;并且不用相位补偿就可以获得一个误差较小的转子位…...

Sklearn 机器学习 缺失值处理 获取填充失值的统计值

💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 使用 Scikit-learn 处理缺失值并提取填充统计信息的完整指南 在机器学习项目中,数据清…...