深入理解 C++ 语法:从基础知识到高级应用
C++ 语法
让我们将以下代码分解以更好地理解它:
示例
#include <iostream>
using namespace std;
int main() {
cout << "Hello World!";
return 0;
}
示例解释
- 第 1 行:
#include <iostream>是一个头文件库,它让我们可以使用输入和输出对象,比如cout(在第 5 行使用)。头文件为 C++ 程序添加功能。 - 第 2 行:
using namespace std表示我们可以使用标准库中的对象和变量名称。 - 如果你不理解
#include <iostream>和using namespace std如何工作,不用担心。只需将其视为几乎总是出现在你的程序中的内容。 - 第 3 行:空白行。C++ 忽略空白字符。但我们使用它来使代码更易读。
- 第 4 行:C++ 程序中的另一个几乎总是出现的东西是
int main()。这被称为一个函数。其花括号{}内的任何代码都将被执行。 - 第 5 行:
cout(读作 "see-out")是一个对象,与插入运算符<<一起用于输出/打印文本。在我们的示例中,它将输出 "Hello World!"。- 注意:每个 C++ 语句都以分号
;结束。 - 注意:
int main()的主体也可以写成:int main() { cout << "Hello World! "; return 0; }。记住:编译器会忽略空格。但是,多行使代码更易读。
- 注意:每个 C++ 语句都以分号
- 第 6 行:
return 0结束了main函数。 - 第 7 行:不要忘记添加闭合花括号
}来实际结束main函数。
省略命名空间
你可能会看到一些 C++ 程序在没有标准命名空间库的情况下运行。可以省略 using namespace std 行,并用 std 关键字替换它,后跟 :: 运算符来使用一些对象:
示例
#include <iostream>
int main() {
std::cout << "Hello World!";
return 0;
}
是否包含标准命名空间库取决于你。
C++ 输出(打印文本)
cout 对象与 << 运算符一起用于输出值/打印文本:
示例
#include <iostream>
using namespace std;
int main() {
cout << "Hello World!";
return 0;
}
你可以添加任意多个 cout 对象。但是请注意,它不会在输出的末尾插入新行:
示例
#include <iostream>
using namespace std;
int main() {
cout << "Hello World!";
cout << "I am learning C++";
return 0;
}
新行
要插入一个新行,你可以使用 \n 字符:
示例
#include <iostream>
using namespace std;
int main() {
cout << "Hello World! \n";
cout << "I am learning C++";
return 0;
}
提示:连续两个 \n 字符会创建一个空白行:
示例
#include <iostream>
using namespace std;
int main() {
cout << "Hello World! \n\n";
cout << "I am learning C++";
return 0;
}
另一种插入新行的方法是使用 endl 操纵符:
示例
#include <iostream>
using namespace std;
int main() {
cout << "Hello World!" << endl;
cout << "I am learning C++";
return 0;
}
\n 和 endl 都用于换行。然而,\n 最常用。
但是,\n 究竟是什么?
换行字符 (\n) 被称为转义序列,它强制光标将其位置更改为屏幕上下一行的开头。这将导致换行。
其他有效的转义序列示例包括:
| 转义序列 | 描述 | 示例 |
|---|---|---|
\t |
创建一个水平制表符 | |
\\ |
插入一个反斜杠字符 () | |
\" |
插入双引号字符 |
C++ 注释
注释可用于解释 C++ 代码,并使其更易读。它还可以用于在测试替代代码时防止执行。注释可以是单行或多行。
单行注释
单行注释以两个正斜杠开始 (//)。
// 和行末之间的任何文本都将被编译器忽略(不会执行)。
此示例在代码行之前使用了单行注释:
示例
// This is a comment
cout << "Hello World!";
此示例在代码行末尾使用了单行注释:
示例
cout << "Hello World!"; // This is a comment
C++ 多行注释
多行注释以 /* 开始,以 */ 结束。
/* 和 */ 之间的任何文本都将被编译器忽略:
示例
/* 以下代码将在屏幕上打印 Hello World!
并且这太棒了 */
cout << "Hello World!";
单行或多行注释?
你可以自己决定使用哪种。通常,我们用 // 来进行短注释,用 /* */ 来进行长注释。
最后
为了方便其他设备和平台的小伙伴观看往期文章:
微信公众号搜索:Let us Coding,关注后即可获取最新文章推送
看完如果觉得有帮助,欢迎点赞、收藏、关注
深入理解 C++ 语法:从基础知识到高级应用的更多相关文章
- 爬虫基础---HTTP协议理解、网页的基础知识、爬虫的基本原理
一.HTTP协议的理解 URL和URI 在学习HTTP之前我们需要了解一下URL.URI(精确的说明某资源的位置以及如果去访问它) URL:Universal Resource Locator 统一资 ...
- jsp学习--基本语法和基础知识
一.JSP简单介绍 1.什么是JSP? JSP全称是Java Server Pages,它和servle技术一样,都是SUN公司定义的一种用于开发动态web资源的技术. JSP这门技术的最大的特点在于 ...
- JS基础语法---数组基础知识总结
数组: 存储一组有序的数据 数组的作用: 一次性存储多个数据 数组的定义方式: 1.构造函数定义数组: var 数组名=new Array(); 2.字面量方式定义数组: var 数组名=[]; ...
- C#基础知识1-深入理解值类型和引用类型
C#值类型和引用类型这个概念在刚学习的时候应该就知道了.但是我们并没有深入的去理解它.越是基础知识其实才是最有用的.对代码的优化,代码质量的提升都有帮助.通过整理本文章,对很多知识也起到了巩固的作用吧 ...
- TCP/IP 和HTTP 协议基础知识
来源:http://www.myhack58.com/Article/60/63/2014/50072.htm 相信不少初学手机联网开发的朋友都想知道Http与Socket连接究竟有什么区别,希望通过 ...
- 你不得不知的Java基础知识
本篇博客主要记录Java中面向对象的概念和Java语法的基础知识. 面向对象 什么是面向对象 面向对象是一种优秀的软件设计思想,是相对于面向过程.面向切面等设计思想的一种软件设计理念.它的核心思想是运 ...
- 深入理解python(一)python语法总结:基础知识和对python中对象的理解
用python也用了两年了,趁这次疫情想好好整理下. 大概想法是先对python一些知识点进行总结,之后就是根据python内核源码来对python的实现方式进行学习,不会阅读整个源码,,,但是应该会 ...
- php基础知识(语法与原理)
一.php简介 PHP超文本预处理器.是嵌入HTML文件中的服务器脚本程序. PHP代码标记:<?php …. ?> PHP文件的扩展名:.php PHP文件的执行:必须从域名开始访问 P ...
- mysql基础知识语法汇总整理(一)
mysql基础知识语法汇总整理(二) 连接数据库操作 /*连接mysql*/ mysql -h 地址 -P 端口 -u 用户名 -p 密码 例如: mysql -u root -p **** /* ...
- JavaSE 基础知识(常识概念 + 基础语法)问答总结/面试题 —— 讲给应届生的 Java 开源知识项目
写在最前面 这个项目是从20年末就立好的 flag,经过几年的学习,回过头再去看很多知识点又有新的理解.所以趁着找实习的准备,结合以前的学习储备,创建一个主要针对应届生和初学者的 Java 开源知识项 ...
随机推荐
- python装饰器保留原有函数名称和属性functools.wraps()
# python装饰器在实现的时候,被装饰后的函数其实已经是另外一个函数了(函数名等函数属性会发生改变),为了不影响,python的functools包中提供了一个叫wraps的decorator来消 ...
- 设置 sudo 无需输入密码
* 设置 sudo 无需输入密码,如下:* [root@localhost ~]# visudo* 在"root ALL=(ALL) ALL"这一行下面,再加入一行:* 将原来的: ...
- SSH原理与实践(二)
主页 个人微信公众号:密码应用技术实战 个人博客园首页:https://www.cnblogs.com/informatics/ 引言 在上一篇文章[ssh原理与实践(一)]中我们详细介绍了SSH两种 ...
- CYQ.Data 操作 Redis 性能测试:对比 StackExchange.Redis
前言: 前几天,点开自己的博客,看了一下 CYQ.Data V5系列 都有哪些文章, 发现了一篇2019年写的:CYQ.Data 对于分布式缓存Redis.MemCache高可用的改进及性能测试,于是 ...
- ReACT介绍与llama_index ReActAgent实践
Agent是大模型的重要应用方向,而ReACT是学术界提出的重要方法,本文介绍ReACT论文,然后通过llama_index ReActAgent来分析ReACT的执行过程. ReACT <RE ...
- CRC常用参数模型及C#代码实现
目录 参数模型 算法实现 CRC-32 CRC-32/MPEG-2 表生成算法 参考资料 本文源码 参数模型 CRC即循环冗余校验码(Cyclic Redundancy Check):是数据通信领域中 ...
- Typora自定义主题详解--打造自己的专属样式
你真的会使用Typora吗? 欢迎关注博主公众号「Java大师」, 专注于分享Java领域干货文章, 关注回复「主题」, 获取大师使用的typora主题: http://www.javaman.cn/ ...
- vscode自动生成头文件
Ctrl Shift P 输入:snipp,选配置用户代码片段,新建全局代码片段文件,修改下列模板: { // Place your 全局 snippets here. Each snippet is ...
- Android USB开发—USB通信
USB通信两端分别称为:HOST(USB主机) 与 Device(USB从机/USB配件),常见的主机就是我们的计算机.而Android 可以支持USB主机模式与USB配件模式,意思就是Android ...
- 【leetcode https://leetcode.cn/problems/count-integers-in-intervals/】 线段树
leetccode count-integers-in-intervals 线段树解决: class CountIntervals { Seg root; public CountIntervals( ...