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教程专栏,如果你还没看过第0篇,点击C教程 - How to C系列专栏第0篇去第0篇 本专栏一致使用操作系统:macOS Ventura,代码编辑器:CLion,C编译器:Clang 感谢一路相伴…...
使用Edge和chrom扩展工具(GoFullPage)实现整页面截图或生成PDF文件
插件GoFullPage下载:点击免费下载 如果在浏览网页时,有需要整个页面截图或导出PDF文件的需求,这里分享一个Edge浏览器的扩展插件:GoFullPage。 这个工具可以一键实现页面从上到下滚动并截取。 一、打开“管理扩展”(…...
image has dependent child images
问题:很多none的镜像无法被删除 解决过程: 1、通过 docker image prune -f 提示可删除为 0 2、直接进行删除报错: docker rmi 8f5116cbc201Error response from daemon: conflict: unable to delete 8f5116cbc201 (cannot be forced) - im…...
Linux系统中基于NGINX的代理缓存配置指南
作为一名专业的爬虫程序员,你一定知道代理缓存在加速网站响应速度方面的重要性。而使用NGINX作为代理缓存服务器,能够极大地提高性能和效率。本文将为你分享Linux系统中基于NGINX的代理缓存配置指南,提供实用的解决方案,助你解决在…...
openCV项目开发实战--详细介绍如何改善夜间图像的照明(附python和C++源码)
文末附完整的代码实现下载链接 介绍 对于非摄影师来说,在光线不佳的条件下拍出好照片似乎很神奇。完成低光摄影需要技巧、经验和正确的设备的结合。在弱光下拍摄的图像缺乏色彩和独特的边缘。它们还遭受能见度差和深度未知的困扰。这些缺点使得此类图像不适合个人使用或图像处…...
rabbitmq的消息应答
消费者完成一个任务可能需要一段时间,如果其中一个消费者处理一个长的任务并仅只完成 了部分突然它挂掉了,会发生什么情况。RabbitMQ 一旦向消费者传递了一条消息,便立即将该消 息标记为删除。在这种情况下,突然有个消费者挂掉了…...
如何重置树莓派 Pico(重置外围设备失败)
有时候需要重置树莓派 Pico,一种方法是按住 Pico 上的“BOOTSEL”按钮再插入 USB;或者用按钮连接“RUN”和“GND”针脚,然后同时按下这个按钮和“BOOTSEL”按钮。这样就可以进入 USB 模式,这样从一定程度进行了重置。 但是这种方…...
LaWGPT基于中文法律知识的大语言模型_初步安装
准备代码,创建环境 # 下载代码 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(这…...
一文学会sklearn中的交叉验证方法,cross_validate和KFlod实战案例
前言 在机器学习中,我们经常需要评估模型的性能。而为了准确评估模型的性能,我们需要使用一种有效的评估方法。五折交叉验证(5-fold cross-validation)就是其中一种常用的模型评估方法,用于评估机器学习模型的性能和泛…...
《面试1v1》ElasticSearch倒排索引
🍅 作者简介:王哥,CSDN2022博客总榜Top100🏆、博客专家💪 🍅 技术交流:定期更新Java硬核干货,不定期送书活动 🍅 王哥多年工作总结:Java学习路线总结…...
基于架构的软件开发方法
基于架构的软件开发方法 基于架构的软件开发方法是由架构驱动的,即指由构成体系结构的商业、质量和功能需求的组合驱动的。使用ABSD 方法,设计活动可以从项目总体功能框架明确就开始,这意味着需求抽取和分析还没有完成(甚至远远没有完成)&am…...
实战篇之基于二进制思想的用户标签系统(Mysql+SpringBoot)
一: 计算机中的二进制 计算机以二进制表示数据,以表示电路中的正反。在二进制下,一个位只有 0 和 1 。逢二进一 位。类似十进制下,一个位只有 0~9 。逢十进一位。 二: 进制常用运算 (位运算)…...
Ansible 进阶
Ansible 进阶 ⤴️Ansible 入门看这篇文章⤵️Ansible 实战看这篇文章 一.Ansible 中的 Playbook 1.1 Playbook 介绍 如下图,ansible 在整个管理过程中使用 playbook 的大体流程。 Playbook 中包含多个 role,每个 role 对应于在远程主机完成某个比较复…...
滴滴Ceph分布式存储系统优化之锁优化
摘自:https://mp.weixin.qq.com/s/oWujGOLLGItu1Bv5AuO0-A 2020-09-02 21:45 0.引言 Ceph是国际知名的开源分布式存储系统,在工业界和学术界都有着重要的影响。Ceph的架构和算法设计发表在国际系统领域顶级会议OSDI、SOSP、SC等上。Ceph社区得到Red Hat…...
flutter开发实战-MethodChannel实现flutter与iOS双向通信
flutter开发实战-MethodChannel实现flutter与iOS双向通信 最近开发中需要iOS与flutter实现通信,这里使用的MethodChannel 如果需要flutter与Android实现双向通信,请看 https://blog.csdn.net/gloryFlow/article/details/132218837 这部分与https://bl…...
华为、阿里巴巴、字节跳动 100+ Python 面试问题总结(七)
系列文章目录 个人简介:机电专业在读研究生,CSDN内容合伙人,博主个人首页 Python面试专栏:《Python面试》此专栏面向准备面试的2024届毕业生。欢迎阅读,一起进步!🌟🌟🌟 …...
K8S系列一:概念入门
写在前面 本文组织方式: K8S的架构、作用和目的。需要首先对K8S整体有所了解。 K8S是什么? 为什么是K8S? K8S怎么做? K8S的重要概念,即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已被屏蔽
问题:该插件不支持 原因:现在浏览器默认禁用flash 博主当前使用的是谷歌浏览器Chrome 2个主要方法都已经失效 搜索一圈后,之前博客给出的2个主要方法都已经失效。 1、flash.cn 下载本地播放器 2、在chrome中打开flash的禁用开关 2023年解…...
【Spring专题】Spring之Bean的生命周期源码解析——阶段二(IOC之实例化)
目录 前言阅读准备阅读指引阅读建议 课程内容一、SpringIOC之实例化1.1 简单回顾1.2 概念回顾1.3 核心方法讲解 二、方法讲解2.1 AbstractBeanFactory#getMergedLocalBeanDefinition:合并BeanDefinition2.2 AbstractAutowireCapableBeanFactory#createBeanÿ…...
挑战杯推荐项目
“人工智能”创意赛 - 智能艺术创作助手:借助大模型技术,开发能根据用户输入的主题、风格等要求,生成绘画、音乐、文学作品等多种形式艺术创作灵感或初稿的应用,帮助艺术家和创意爱好者激发创意、提高创作效率。 - 个性化梦境…...
零门槛NAS搭建:WinNAS如何让普通电脑秒变私有云?
一、核心优势:专为Windows用户设计的极简NAS WinNAS由深圳耘想存储科技开发,是一款收费低廉但功能全面的Windows NAS工具,主打“无学习成本部署” 。与其他NAS软件相比,其优势在于: 无需硬件改造:将任意W…...
使用VSCode开发Django指南
使用VSCode开发Django指南 一、概述 Django 是一个高级 Python 框架,专为快速、安全和可扩展的 Web 开发而设计。Django 包含对 URL 路由、页面模板和数据处理的丰富支持。 本文将创建一个简单的 Django 应用,其中包含三个使用通用基本模板的页面。在此…...
TDengine 快速体验(Docker 镜像方式)
简介 TDengine 可以通过安装包、Docker 镜像 及云服务快速体验 TDengine 的功能,本节首先介绍如何通过 Docker 快速体验 TDengine,然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker,请使用 安装包的方式快…...
【项目实战】通过多模态+LangGraph实现PPT生成助手
PPT自动生成系统 基于LangGraph的PPT自动生成系统,可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析:自动解析Markdown文档结构PPT模板分析:分析PPT模板的布局和风格智能布局决策:匹配内容与合适的PPT布局自动…...
C# 类和继承(抽象类)
抽象类 抽象类是指设计为被继承的类。抽象类只能被用作其他类的基类。 不能创建抽象类的实例。抽象类使用abstract修饰符声明。 抽象类可以包含抽象成员或普通的非抽象成员。抽象类的成员可以是抽象成员和普通带 实现的成员的任意组合。抽象类自己可以派生自另一个抽象类。例…...
【python异步多线程】异步多线程爬虫代码示例
claude生成的python多线程、异步代码示例,模拟20个网页的爬取,每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程:允许程序同时执行多个任务,提高IO密集型任务(如网络请求)的效率…...
零基础在实践中学习网络安全-皮卡丘靶场(第九期-Unsafe Fileupload模块)(yakit方式)
本期内容并不是很难,相信大家会学的很愉快,当然对于有后端基础的朋友来说,本期内容更加容易了解,当然没有基础的也别担心,本期内容会详细解释有关内容 本期用到的软件:yakit(因为经过之前好多期…...
wpf在image控件上快速显示内存图像
wpf在image控件上快速显示内存图像https://www.cnblogs.com/haodafeng/p/10431387.html 如果你在寻找能够快速在image控件刷新大图像(比如分辨率3000*3000的图像)的办法,尤其是想把内存中的裸数据(只有图像的数据,不包…...
OCR MLLM Evaluation
为什么需要评测体系?——背景与矛盾 能干的事: 看清楚发票、身份证上的字(准确率>90%),速度飞快(眨眼间完成)。干不了的事: 碰到复杂表格(合并单元…...
