2.C++中程序的语法基础--关键字与分隔符

现在回过头来看上一篇中所写的程序:

#include <bits/stdc++.h>
using namespace std;
int main() {// 程序主体cout << "HelloWorld" <<  endl;    return 0; 
}

我们会看到许多英文单词,像"include"、“using”,“int”,“main”,“HelloWorld”等,但是这些哪些属于关键字,哪些是非关键字呢?

首先来看关键字的定义:

关键字是计算机语言定义好的字符序列,有着特殊的含义,一般情况下不能做其它的使用,属于编程语言保留的特殊单词,用于执行特定的功能或操作。

C++中的关键写都是小写的,常用的关键字有 include,int , return , if , else, namespace , break , case , char , while 等等。这些在常用的开发中,需要根据C++语言的标准来查询关键字,但是只要知道这些常用的关键字,其它的不常用的,在使用的时候,可以查询资料或搜索,慢慢就会知道哪些是关键字了。

除在关键字,关键字的名称是编程语言定义好的,供开发者使用的,还有一类是自己定义的名称,这类我们可以称作标识符,比较常见的一些内容,比如,函数名,常量名,变量名,结构体,类名等。这些在以后的程序中会讲解,现在只知道这些概念即可。

标识符的命名遵循下面几个规则:

1.标识符必须以字母或下划线开始,后面可以跟任意数量的字母、数字或下划线。
2.标识符区分大小写。
3.不能使用C++的关键字作为标识符。
4.标识符最好具有描述性,简洁性和一致性。

最后第4条为建议性内容。

#include <bits/stdc++.h>
using namespace std;
int main() {// 程序主体int val;                  // 合法int _val;                 // 合法int 1val;                 // 不合法,不能以数字开头int vval#;                 // 不合法,不能包含#符号int int;                    // 不合法,使用了关键字void printName();  // 合法void print_name(); // 合法,推荐使用下划线分隔void _print_name(); // 合法,推荐使用下划线分隔void 1print_name(); // 不合法,不能以数字开头cout << "HelloWorld" <<  endl;    return 0; 
}

比如printName和print_name 第二个print_name在c++中为推荐的命名方法,在其它开发语言中并不是推荐原命名方法,在各种开发语言中常用的命名方法有如下几种:

Camel Case(驼峰式命名 Java 建议使用此方法):每个单词的首字母大写,除了第一个单词的首字母小写。例如:userName, userInfo
Pascal Case(帕斯卡命名,C#使用建议使用此方法 ):每个单词的首字母大写,包括第一个单词的首字母也大写例如:Student, UserName
Snake Case(下划线命名 C/C++建议使用此方法):单词之间使用下划线(_)分隔例如:user_name, user_phone
Kebab Case(短横线命名 见的相对较少):单词之间使用短横线(-)分隔例如:page-number, page-size。

再来看C++的分隔符

在C++源代码中有一些被定义用于分隔代码作用的字符,这些字符称为分隔符,常见的分隔符有分号(;),左右花括号({}),空白,Tab键(tab),冒号(:)等,其中分号(;)为最常见的分隔符,看程序

每个语句结尾包括了一个分号(;)表明此句结束了,还有大括号({}),

#include <bits/stdc++.h>
using namespace std;
int main() {  //开始分割符 cout << "HelloWorld" <<  endl;    return 0; 
} //结束分隔符

开始分隔符表示此函数main的作用范围的开发,结束分隔符表示main函数结构范围的结束,开始分隔符和结束分隔符必须同时出现,缺一不可,比如没有结束分隔符,则在编译时会出现错误,

在程序出现错误时,查看必要的错误信息是很重要的,上面的main(){}即为一个函数,{}表示函数块。

空白分隔符与tab分隔符主要是为了方便阅读和分隔不同的标识标 关键字等加进去的,两个标识符间有时需要使用空白或分隔符分隔,或者是其它使用符号连接,比如加号(+)

这里的分隔符是为了方便阅读加进来的,如果去掉,也不影响程序的执行。

但是去掉后,再看程序的执行

看程序执行起来是一样的,介理代码阅读起来,就不如加上空白或tab键方便了 。

上面三个是程序中最常用的分隔符。

分隔符冒号(:)不在同的地方作用是不一样的,我的理解是,如果表示分隔,比如在构造函数中,是类给变量赋值的方法,用于初始化成员变量,这个具体的用户,等用到再说。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1535217.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Vue路由二(嵌套多级路由、路由query传参、路由命名、路由params传参、props配置、<router-link>的replace属性)

目录 1. 嵌套(多级)路由2. 路由query传参3. 路由命名4. 路由params传参5. props配置6. <router-link>的replace属性 1. 嵌套(多级)路由 pages/Car.vue <template><ul><li>car1</li><li>car2</li><li>car3</li></ul…

【Java面试】第七天

&#x1f31f;个人主页&#xff1a;时间会证明一切. 目录 有三个线程T1,T2,T3如何保证顺序执行&#xff1f;依次执行start方法使用join使用CountDownLatch使用线程池使用CompletableFuture Spring Bean的生命周期是怎么样的&#xff1f;Autowired和Resource的关系&#xff1f;相…

读取CSV中文件报ArrayIndexOutOfBounds异常

序言 有个需求要将csv文件入库&#xff0c;之前测试的文件都是可以正常解析入库的&#xff0c;但新提供的一个csv文件读取的时候捕获的异常信息就总是提示&#xff1a;Index 1 out of bounds for length 1。 读取csv文件的方法 public static List<Map<String, Object…

8.6小波变换(Wavelet Transform)边缘检测

实验原理 由于OpenCV本身并不直接支持小波变换&#xff08;Wavelet Transform&#xff09;&#xff0c;我们需要借助一些技巧来实现它。一种常见的方法是利用离散余弦变换&#xff08;DCT&#xff09;或离散傅立叶变换&#xff08;DFT&#xff09;来近似实现小波变换的功能。但…

【机器学习(六)】分类和回归任务-LightGBM算法-Sentosa_DSML社区版

文章目录 一、算法概念二、算法原理&#xff08;一&#xff09;Histogram&#xff08;二&#xff09;GOSS1、信息增益2、近似误差 &#xff08;三&#xff09;EFB 三、算法优缺点&#xff08;一&#xff09;优点&#xff08;二&#xff09;缺点 四、LightGBM分类任务实现对比&a…

AI基础 L21 Quantifying Uncertainty and Reasoning with Probabilities III

Bayesian Networks 1 Bayesian Networks • A Bayesian Network (BN) represents the dependencies among variables and encodes the full joint probability distribution concisely. • A BN is a directed graph, where each node is annotated with probability informati…

[项目][WebServer][CGI机制 设计]详细讲解

目录 1.何为CGI机制&#xff1f;2.理解CGI机制3.CGI接口设计1.ProcessNonCgi2.ProcessCgi 1.何为CGI机制&#xff1f; CGI(Common Gateway Interface)是外部应用程序(CGI程序)与WEB服务器之间的接口标准&#xff0c;是在CGI程序和WEB服务器之间传递信息的过程 2.理解CGI机制 …

[XILINX] 正点原子ZYNQ7015开发板!ZYNQ 7000系列、双核ARM、PCIe2.0、SFPX2,性能强悍,资料丰富!

正点原子ZYNQ7015开发板&#xff01;ZYNQ 7000系列、双核ARM、PCIe2.0、SFPX2&#xff0c;性能强悍&#xff0c;资料丰富&#xff01; 正点原子Z15 ZYNQ开发板&#xff0c;搭载Xilinx Zynq7000系列芯片&#xff0c;核心板主控芯片的型号是XC7Z015CLG485-2。开发板由核心板&…

JAVA开源项目 在线视频教育平台 计算机毕业设计

本文项目编号 T 027 &#xff0c;文末自助获取源码 \color{red}{T027&#xff0c;文末自助获取源码} T027&#xff0c;文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析 六、核心代码6.1 新…

【数据结构与算法 | 灵神题单 | 合并链表篇】力扣2, 21, 445, 2816

1. 力扣2&#xff1a;两数相加 1.1 题目&#xff1a; 给你两个 非空 的链表&#xff0c;表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的&#xff0c;并且每个节点只能存储 一位 数字。 请你将两个数相加&#xff0c;并以相同形式返回一个表示和的链表。 你可…

o1模型:引领AI技术在STEM领域的突破与应用

o1模型是OpenAI最新推出的大型语言模型&#xff0c;它在多个领域展现出了卓越的能力&#xff0c;被认为是AI技术发展的一个重要里程碑。以下是对o1模型的详细介绍和分析&#xff1a; o1模型的简介和性能评估 o1模型在物理、化学、生物学等领域的基准任务上达到了博士生水平&…

Android Studio:驱动高效开发的全方位智能平台

目录 Android Studio 1. 智能的代码编辑与自动补全 2. 快捷键与代码模板 3. 强大的调试工具 4. 实时分析与性能优化 5. 集成的 Gradle 构建系统 6. 持续集成与自动化 7. 版本控制与团队协作 8. 丰富的插件生态与定制化 9. 快速布局与 UI 设计工具 9. 即时运行&#…

数字IC设计\FPGA 职位经典笔试面试--整理

注&#xff1a; 资料都是基于网上一些博客分享和自己学习整理而成的 1&#xff1a;什么是同步逻辑和异步逻辑&#xff1f; 同步逻辑是时钟之间有固定的因果关系。异步逻辑是各时钟之间没有固定的因果关系。 同步时序 逻辑电路的特点&#xff1a;各触发器的时钟端全部连接在一…

MySQL权限管理(DCL)总结

黑马程序员老师讲的非常好 第一个用户管理偏向于开发人员 第二个权限控制偏向于管理人员 但是怎么说呢&#xff0c;你毕竟学mysql了&#xff0c;都得学一学吧。只有精通&#xff0c;实力到位&#xff0c;才能被别人所认可&#xff01;

【打印管理】水印设置支持表单内容

09/11 主要更新模块概览 水印设置 拖动排序 恢复默认 其他更新 01 表单管理 1.1 【打印管理】-水印设置新增支持表单内容 说明&#xff1a; 在打印管理的水印设置中&#xff0c;原本仅支持企业名称作为水…

ROS笔记3.路径规划1

在 Rviz 中可视化路径规划move_base 节点的基本概念什么是Global Planner&#xff1f;什么是Global Costmap&#xff1f; 在 Rviz 中可视化路径规划 对于本章&#xff0c;您基本上需要使用 RViz 的 3 个元素&#xff1a; Map Display (Costmaps)Path Displays (Plans)2D 工具 …

加速开发体验:为 Android Studio 设置国内镜像源

Android Studio 是由 JetBrains 开发的一个官方 IDE&#xff0c;用于 Android 应用开发。由于网络原因&#xff0c;直接从 Google 的服务器下载可能会比较慢或者不稳定。幸运的是&#xff0c;我们可以通过配置国内镜像源来加速下载和更新。 文章目录 &#x1f4af; 修改 Gradle…

Go协程及并发锁应用指南

概念 协程&#xff08;Goroutine&#xff09;是Go语言独有的并发体&#xff0c;是一种轻量级的线程&#xff0c;也被称为用户态线程。相对于传统的多线程编程&#xff0c;协程的优点在于更加轻量级&#xff0c;占用系统资源更少&#xff0c;切换上下文的速度更快&#xff0c;不…

如何快速清理Docker中的停止容器?

如何快速清理Docker中的停止容器? 方法一:使用`docker container prune`方法二:结合`docker ps`和`docker rm`注意(这些命令慎用,确定容器不需要之后再执行)💖The Begin💖点点关注,收藏不迷路💖 Docker容器在停止后可能会占用不必要的磁盘空间。如何清理这些停止的…

linux 双网卡服务器突然断电后网卡单通故障解决

某台linux 双网卡服务器突然断电后网卡单通故障解决 故障现象&#xff1a;断电后重启服务器&#xff0c;主用网卡IP只能同网段访问&#xff0c;其他网段无法访问&#xff0c;备用网卡则正常&#xff1b; 解决方案&#xff1a;route -n查询路由信息&#xff0c;发现主网卡路由…