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

001_C++语法基础

C++语法基础

  1. 所有C++语法要用英文
  2. 区分大小写
  3. 每个语句写完以分号结束

C++标准输入输出头文件iostream

若想通过C++实现数据的输入和输出,需要导入标准输入输出头文件

#include <iostream>

标准输入输出头文件<iostream>中包含了cin输入语句和cout输出语句

标准命名空间std

C++的标准输入输出是cin cout,而是为了避免出现同名语句cin cout,于是标准输入输出cin cout被划分到了标准命名空间std中,所有若我们要想使用标准输入输出cin cout,需要先使用命名空间std

using namespace std;

主函数

每一个C++程序必须要有一个入口,通过入口才能找到我们的目标源程序
C++使用主函数main()作为C++程序的入口,一个C++程序有且仅有一个主函数(入口)

int main(){//编写目标代码return 0; // 结束程序
}

输出语句

C++中的标准输出语句为cout
我们可以通过cout向计算机下达输出指令,让计算机输出一句话。

输出hello world

cout语句后要接 <<符号,意为流插入运算符
输出一句话要用英文的双引号包起来,代表字符串的类型

cout << "Hello world";

前面知识代码解释

// 包含了一个标准输入输出头文件
// i-input 0-output s-stream 流 
#include <iostream>  // cin cout
// 使用 标准命名 空间std 
using namespace std; // 区分标准cin/cout和其他同名cin/cout // main() 主函数 入口 有且仅有一个 
int main() { // << 流插入运算符号 cout << "Hello World\n" << endl;return 0; // 结束C++程序
}

endl 换行

如果要输出一首诗,我们可以先输出第一行的字符串,然后使用cout输出endl指令,即输出一个换行,换行之后再继续输出第二行的字符串,以此类推…

#include <iostream> 
using namespace std; int main() { cout << "朝辞白帝彩云间";cout << endl;cout << "千里江陵一日还"; cout << endl;return 0;
}

cout 链式编程

cout支持链式编程,上面案例我们可以使用cout进行链式编程

#include <iostream> 
using namespace std; int main() { cout << "朝辞白帝彩云间" << endl<< "千里江陵一日还" << endl;return 0;
}
课堂练习

打印输出如下图形

  ****
*****

代码:

#include <iostream> 
using namespace std; int main() { cout << "  *" << endl << " ***" << endl << "*****" << endl;return 0;
}

标识符(biao zhi fu)

标识符(identifier)是指用来标识某个实体的一个符号。在计算机编程语言中,标识符是用户编程时使用的名字,用于给变量、常量、函数、语句块等命名,以建立名称与使用之间的关系。

C++中的标识符的命名规则:

  • 由数字、字母、下划线构成,但是数字不能用作开头

关键字

关键字(keyword)属于保留字,是整个C++语言范围内预先保留的标识符。

每个C++关键字都有特殊的含义、功能。

简单来说就是C++中一切带有功能的语句都属于关键字,如我们了解过的语句:int return using 这些都属于关键字。

变量

变量,顾名思义,值可变的量,在C++中,如何定义一个可以存储整数的变量呢?

int age = 18;
// 变量
int age; // int数据类型-声明一个变量为整数类型(整型)
age = 18; // age变量名-可以存储整型数据
#include <iostream> 
using namespace std; int main() { int age;age = 38;cout << "王老师的年龄是:" << age << "岁。" << endl;return 0;
}

变量的命名规则

变量名属于自定义的标识符,所有变量的命名规则同标识符的命名规则一样:

  • 由数字、字母、下划线构成,但是数字不能用作开头

而关键字是C++整个语言范围内预先保留的标识符,所以关键字不能用作变量名

除了变量名以外,后续我们还将设计常量名、函数名、数组名、结构体名等等,这些均属于自定义的标识符,皆要遵循标识符的命名规则和命名规范。

变量的命名规范

变量的命名要有意义:

  • 如果我们要存储年龄,可以定义age变量,如果我们要存储名字,可以定义name变量。

复杂的变量名要采用驼峰命名法:

  • 比如我们的变量名要表达我的理想身高,采用驼峰命名法应写为:myIdealHeight

其他自定义的标识符也将遵循此命名规范。

#include <iostream> 
using namespace std; int main() { int myIdealHeight = 210;cout << "王老师的理想身高是:" << myIdealHeight << endl;return 0;
}

常量

常量,值不可改变的量,在C++中,如何定义一个可以存储整数的常量呢?

const int age = 18;
#include <iostream> 
using namespace std; int main() { // 通过int声明了一个整型变量a int a = 1;// 通过const修饰了变量b,使得变量b变为常量 const int b = 1;// 常量应用 比如圆周率 运行中不能被修改 b = 2; // *常量不能修改,编译不会通过 return 0;
}

注意: 除了const声明的变量作为常量外,C++还有其他常量,如:数字本身(123)即是常量、字符串本身("hello")是常量、变量的地址也是常量等等,常量的最大特征就是本身不可被修改

C++程序运行过程

  1. 编辑代码
  2. 编译
  3. 运行执行文件查看结果

编译过程

编译器就是将"高级语言"翻译为"机器语言(低级语言)"的程序。

一个现代编译器的主要工作流程:源代码(source code) -> 预处理(preprocessor) -> 编译(compiler) -> 汇编程序(assembler) -> 目标代码(object code) -> 链接器(Linker) -> 可执行程序(executables)。

常见的C++编译器主要分为GCC家族和MS家族,我们现在所使用的VS中搭载的编译器为MS家族中的MSVC。

#include <iostream> 

# 标#号的都会预处理,# 预处理命令

解释和调试

编译是将整个代码一起翻译为01。

而解释是逐行地翻译为01。

若我们直接编译C++程序,则这个过程就是编译过程,若我们在使用断点调试进行代码调试的时候,这个时候就是解释的过程。

相关文章:

001_C++语法基础

C语法基础 所有C语法要用英文区分大小写每个语句写完以分号结束 C标准输入输出头文件iostream 若想通过C实现数据的输入和输出&#xff0c;需要导入标准输入输出头文件 #include <iostream>标准输入输出头文件<iostream>中包含了cin输入语句和cout输出语句 标…...

对Excel表中归类的文件夹进行自动分类

首先把excel表另存为.txt文件&#xff08;注意&#xff1a;刚开始可能是ANSI格式&#xff0c;需要转成UTF-8格式&#xff09;&#xff1b;再新建一个.txt文件&#xff0c;重命名成.bat文件(注意&#xff1a;直接创建的如果是是UTF-8格式&#xff0c;最好转成ANSI格式&#xff0…...

LabVIEW液压支架控制系统的使用与各种配置的预测模型的比较分析

LabVIEW液压支架控制系统的使用与各种配置的预测模型的比较分析 模型预测控制在工业中应用广泛。这种方法的优点之一是在求解最优控制问题时能够明确考虑对输入和输出状态施加的约束。控制对象模型用于有限时间范围内最优控制的实时计算。所使用的数学设备允许从具有单输入和单…...

C++中位运算符使用

& 与 只有都为1结果为1 0 & 0 00 & 1 01 & 0 01 & 1 1 | 或 只要一个为1结果为1 0|00 0|11 1|01 1|11 ^ 异或 两个相同的数字为0&#xff0c;其余为1 0^00 1^01 0^11 1^10 ~ 取反 将进制位数进行取反 ~1-2 //0000 0001-->代…...

微机原理 || 第2次测试:汇编指令(加减乘除运算,XOR,PUSH,POP,寻址方式,物理地址公式,状态标志位)(测试题+手写解析)

&#xff08;一&#xff09;测试题目&#xff1a; 1.数[X]补1111,1110B&#xff0c;则其真值为 2.在I/O指令中,可用于表示端口地址的寄存器 3. MOV AX,[BXSl]的指令中&#xff0c;源操作数的物理地址应该如何计算 4.执行以下两条指令后&#xff0c;标志寄存器FLAGS的六个状态…...

人员闯入检测告警算法

人员闯入检测告警算法通过yolov5网络模型识别检测算法&#xff0c;人员闯入检测告警算法对未经许可或非法进入的人员进行及时识别告警&#xff0c;确保对危险区域的安全管理和保护。YOLO系列算法是一类典型的one-stage目标检测算法&#xff0c;其利用anchor box将分类与目标定位…...

python中super()用法

super关键字的用法 一、概述二、作用三、语法四、使用示例1.通过super() 来调用父类的__init__ 构造方法&#xff1a;2.通过supper() 来调用与子类同名的父类方法2.1 单继承2.2 多继承 一、概述 super() 是python 中调用父类&#xff08;超类&#xff09;的一种方法&#xff0…...

jmeter While控制器

一种常见的循环控制语句&#xff0c;用于重复执行一段代码块&#xff0c;直到指定的条件不再满足。 参数&#xff1a; 空LASTJMeter变量、函数、属性或任意其他可用表达式 &#xff08;jmeter提供的方法&#xff09;。判断变量值count_num小于等于20&#xff0c;推荐简单的几…...

3D数字孪生技术助力港口全新升级,提供实时数据进行智能调度

港口3D数字孪生平台是一种基于数字技术的虚拟模型&#xff0c;它可以模拟真实的港口环境&#xff0c;并对港口的运营、管理、安全等方面进行实时监控和优化。该平台带来了许多智能化提升&#xff0c;包括以下几个方面&#xff1a; 一、自动化操作和智能调度 数字孪生平台可以通…...

Qt日历控件示例-QCalendarWidget

基本说明 QCalendarWidget介绍&#xff1a; QCalendarWidget 是 Qt 框架中提供的一个日期选择控件,用户可以通过该控件快速选择需要的日期,并且支持显示当前月份的日历。 这里&#xff0c;我们继承了QCalendarWidget&#xff0c;做了一些简单封装和样式调整 1.使用的IDE&…...

函数式编程(四)Stream流使用

一、概述 在使用stream之前&#xff0c;先理解Optional 。 Optional是Java 8引入的一个容器类&#xff0c;用于处理可能为空的值。它提供了一种优雅的方式来处理可能存在或不存在的值&#xff0c;避免了空指针异常。 Optional的主要特点如下&#xff1a; 可能为空&#xff…...

区块链面临六大安全问题 安全测试方案研究迫在眉睫

区块链面临六大安全问题 安全测试方案研究迫在眉睫 近年来&#xff0c;区块链技术逐渐成为热门话题&#xff0c;其应用前景受到各国政府、科研机构和企业公司的高度重视与广泛关注。随着技术的发展&#xff0c;区块链应用与项目层出不穷&#xff0c;但其安全问题不容忽视。近年…...

K8S---kubelet TLS 启动引导

一、引导启动初始化过程(Bootstrap Initialization ) 1、kubeadm 生成一个Token,类似07401b.f395accd246ae52d这种格式,或者自己手动生成2、使用kubectl命令行,生成一个Secret,具体详见认证、授权3、kubelet 进程启动 (begin)4、kubelet 看到自己没有对应的 kubeconfig…...

Android系统修改驱动固定USB摄像头节点绑定前后置摄像头

前言 Android系统中usb摄像头节点会因为摄像头所接的usb口不同或者usb设备识别顺序不一样而出现每次开机生成的video节点不一样的问题。由于客户app调用摄像头时,需要固定摄像头的节点。因此需要针对前面的情况做处理。 方式1:通过摄像头名称固定摄像头节点 --- a/kernel…...

RT-Thread 内核移植

内核移植 内核移植就是将RTT内核在不同的芯片架构、不同的板卡上运行起来&#xff0c;能够具备线程管理和调度&#xff0c;内存管理&#xff0c;线程间同步等功能。 移植可分为CPU架构移植和BSP&#xff08;Board support package&#xff0c;板级支持包&#xff09;移植两部…...

springboot中entity层、dto层、vo层通俗理解三者的区别

entity&#xff1a;这个类的属性是跟数据库字段一模一样的&#xff08;驼峰命名&#xff09;&#xff0c;当我们使用MyBatis-Plus的时候经常用得到。 dto&#xff1a;用于后端接收前端返回的数据&#xff0c;一般是post请求&#xff0c;前端会给我们返回一个json对象&#xff…...

TypeScript_队列结构-链表

队列 队列&#xff08;Queue&#xff09;&#xff0c;它是一种受限的线性表&#xff0c;先进先出&#xff08;FIFO First In First Out&#xff09; 受限之处在于它只允许在队列的前端&#xff08;front&#xff09;进行删除操作而在队列的后端&#xff08;rear&#xff09;进…...

STM32G0 定时器PWM DMA输出驱动WS2812配置 LL库

通过DMA方式输出PWM模拟LED数据信号 优点&#xff1a;不消耗CPU资源 缺点&#xff1a;占用内存较大 STM32CUBEMX配置 定时器配置 定时器通道&#xff1a;TIM3 CH2 分频&#xff1a;0 重装值&#xff1a;79&#xff0c;芯片主频64Mhz&#xff0c;因此PWM输出频率&#xff1a…...

记录错误:Access denied for user ‘root‘@‘localhost‘ (using password:No) 解决方案

他说我没输入密码&#xff0c;但是我输入了啊&#xff1f;&#xff1f;于是&#xff0c;我试了试这儿&#xff0c;password 一改就好了。。。 他原来是是我打的很快&#xff0c;快速生成的。。。。...

python爬虫实战(5)--获取小破站热榜

1. 分析地址 打开小破站热榜首页&#xff0c;查看响应找到如下接口地址 2. 编码 定义请求头 拿到标头 复制粘贴&#xff0c;处理成json 处理请求头代码如下: def format_headers_to_json():f open("data.txt", "r", encoding"utf-8") # 读…...

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…...

pam_env.so模块配置解析

在PAM&#xff08;Pluggable Authentication Modules&#xff09;配置中&#xff0c; /etc/pam.d/su 文件相关配置含义如下&#xff1a; 配置解析 auth required pam_env.so1. 字段分解 字段值说明模块类型auth认证类模块&#xff0c;负责验证用户身份&am…...

Mac软件卸载指南,简单易懂!

刚和Adobe分手&#xff0c;它却总在Library里给你写"回忆录"&#xff1f;卸载的Final Cut Pro像电子幽灵般阴魂不散&#xff1f;总是会有残留文件&#xff0c;别慌&#xff01;这份Mac软件卸载指南&#xff0c;将用最硬核的方式教你"数字分手术"&#xff0…...

Device Mapper 机制

Device Mapper 机制详解 Device Mapper&#xff08;简称 DM&#xff09;是 Linux 内核中的一套通用块设备映射框架&#xff0c;为 LVM、加密磁盘、RAID 等提供底层支持。本文将详细介绍 Device Mapper 的原理、实现、内核配置、常用工具、操作测试流程&#xff0c;并配以详细的…...

JVM虚拟机:内存结构、垃圾回收、性能优化

1、JVM虚拟机的简介 Java 虚拟机(Java Virtual Machine 简称:JVM)是运行所有 Java 程序的抽象计算机,是 Java 语言的运行环境,实现了 Java 程序的跨平台特性。JVM 屏蔽了与具体操作系统平台相关的信息,使得 Java 程序只需生成在 JVM 上运行的目标代码(字节码),就可以…...

使用LangGraph和LangSmith构建多智能体人工智能系统

现在&#xff0c;通过组合几个较小的子智能体来创建一个强大的人工智能智能体正成为一种趋势。但这也带来了一些挑战&#xff0c;比如减少幻觉、管理对话流程、在测试期间留意智能体的工作方式、允许人工介入以及评估其性能。你需要进行大量的反复试验。 在这篇博客〔原作者&a…...

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

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

WEB3全栈开发——面试专业技能点P4数据库

一、mysql2 原生驱动及其连接机制 概念介绍 mysql2 是 Node.js 环境中广泛使用的 MySQL 客户端库&#xff0c;基于 mysql 库改进而来&#xff0c;具有更好的性能、Promise 支持、流式查询、二进制数据处理能力等。 主要特点&#xff1a; 支持 Promise / async-await&#xf…...

React核心概念:State是什么?如何用useState管理组件自己的数据?

系列回顾&#xff1a; 在上一篇《React入门第一步》中&#xff0c;我们已经成功创建并运行了第一个React项目。我们学会了用Vite初始化项目&#xff0c;并修改了App.jsx组件&#xff0c;让页面显示出我们想要的文字。但是&#xff0c;那个页面是“死”的&#xff0c;它只是静态…...

GraphRAG优化新思路-开源的ROGRAG框架

目前的如微软开源的GraphRAG的工作流程都较为复杂&#xff0c;难以孤立地评估各个组件的贡献&#xff0c;传统的检索方法在处理复杂推理任务时可能不够有效&#xff0c;特别是在需要理解实体间关系或多跳知识的情况下。先说结论&#xff0c;看完后感觉这个框架性能上不会比Grap…...