当前位置: 首页 > 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…...

React 第五十五节 Router 中 useAsyncError的使用详解

前言 useAsyncError 是 React Router v6.4 引入的一个钩子&#xff0c;用于处理异步操作&#xff08;如数据加载&#xff09;中的错误。下面我将详细解释其用途并提供代码示例。 一、useAsyncError 用途 处理异步错误&#xff1a;捕获在 loader 或 action 中发生的异步错误替…...

【杂谈】-递归进化:人工智能的自我改进与监管挑战

递归进化&#xff1a;人工智能的自我改进与监管挑战 文章目录 递归进化&#xff1a;人工智能的自我改进与监管挑战1、自我改进型人工智能的崛起2、人工智能如何挑战人类监管&#xff1f;3、确保人工智能受控的策略4、人类在人工智能发展中的角色5、平衡自主性与控制力6、总结与…...

FFmpeg 低延迟同屏方案

引言 在实时互动需求激增的当下&#xff0c;无论是在线教育中的师生同屏演示、远程办公的屏幕共享协作&#xff0c;还是游戏直播的画面实时传输&#xff0c;低延迟同屏已成为保障用户体验的核心指标。FFmpeg 作为一款功能强大的多媒体框架&#xff0c;凭借其灵活的编解码、数据…...

【解密LSTM、GRU如何解决传统RNN梯度消失问题】

解密LSTM与GRU&#xff1a;如何让RNN变得更聪明&#xff1f; 在深度学习的世界里&#xff0c;循环神经网络&#xff08;RNN&#xff09;以其卓越的序列数据处理能力广泛应用于自然语言处理、时间序列预测等领域。然而&#xff0c;传统RNN存在的一个严重问题——梯度消失&#…...

《用户共鸣指数(E)驱动品牌大模型种草:如何抢占大模型搜索结果情感高地》

在注意力分散、内容高度同质化的时代&#xff0c;情感连接已成为品牌破圈的关键通道。我们在服务大量品牌客户的过程中发现&#xff0c;消费者对内容的“有感”程度&#xff0c;正日益成为影响品牌传播效率与转化率的核心变量。在生成式AI驱动的内容生成与推荐环境中&#xff0…...

渲染学进阶内容——模型

最近在写模组的时候发现渲染器里面离不开模型的定义,在渲染的第二篇文章中简单的讲解了一下关于模型部分的内容,其实不管是方块还是方块实体,都离不开模型的内容 🧱 一、CubeListBuilder 功能解析 CubeListBuilder 是 Minecraft Java 版模型系统的核心构建器,用于动态创…...

页面渲染流程与性能优化

页面渲染流程与性能优化详解&#xff08;完整版&#xff09; 一、现代浏览器渲染流程&#xff08;详细说明&#xff09; 1. 构建DOM树 浏览器接收到HTML文档后&#xff0c;会逐步解析并构建DOM&#xff08;Document Object Model&#xff09;树。具体过程如下&#xff1a; (…...

【Web 进阶篇】优雅的接口设计:统一响应、全局异常处理与参数校验

系列回顾&#xff1a; 在上一篇中&#xff0c;我们成功地为应用集成了数据库&#xff0c;并使用 Spring Data JPA 实现了基本的 CRUD API。我们的应用现在能“记忆”数据了&#xff01;但是&#xff0c;如果你仔细审视那些 API&#xff0c;会发现它们还很“粗糙”&#xff1a;有…...

WordPress插件:AI多语言写作与智能配图、免费AI模型、SEO文章生成

厌倦手动写WordPress文章&#xff1f;AI自动生成&#xff0c;效率提升10倍&#xff01; 支持多语言、自动配图、定时发布&#xff0c;让内容创作更轻松&#xff01; AI内容生成 → 不想每天写文章&#xff1f;AI一键生成高质量内容&#xff01;多语言支持 → 跨境电商必备&am…...

使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台

🎯 使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台 📌 项目背景 随着大语言模型(LLM)的广泛应用,开发者常面临多个挑战: 各大模型(OpenAI、Claude、Gemini、Ollama)接口风格不统一;缺乏一个统一平台进行模型调用与测试;本地模型 Ollama 的集成与前…...