深入理解 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 开源知识项 ...
随机推荐
- 解决macOS Big Sur系统pyenv不能安装python3.6.x版本的问题及pyenv-virtualenv的安装使用
前置 先安装好pyenv brew install pyenv 配置环境 echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n ...
- 简化Simulink的建模与模型重构
简化Simulink的建模与模型重构 模型重构 Simulink作为汽车和自动化领域中经典的模型工程必备工具,不管是专业的汽车控制器的开发还是自动化控制的专业应用编程,都会使用到Simulink进行图 ...
- 【Azure 应用服务】Function App / App Service 连接 Blob 报错
问题描述 因 Blob 启用了防火墙功能,但是当把App Service 或 Function App的出站IP地址都加入到Blob的白名单中,为什么访问还是403错误呢? 问题解答 Azure St ...
- C# 课堂管理系统(火影忍者界面!!!)
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 usin ...
- C++ //count_if //按条件统计元素个数 //自定义和 内置
1 //按条件统计元素个数 2 //count_if 3 4 #include <iostream> 5 #include<string> 6 #include<vect ...
- idea技巧-自定义后缀补全
Idea技巧-Postfix Completion 在idea中可以使用.xxx进行后缀补全 比如.sout 如何自定义后缀补全? 比如.log 在idea中打开设置 File | Settings ...
- Java加密技术(二)——对称加密算法DES&AES
desdesedejavaaes 接下来我们介绍对称加密算法,最常用的莫过于DES数据加密算法. DES DES-Data Encryption Standard,即数据加密算法.是IBM公司 ...
- MySQL 如何以当前日期时间作为字段初始默认值?
1.以当前时间作为默认值 使用 DEFAULT CURRENT_TIMESTAMP 声明字段,插入记录时不用指定 dt,自动置入当前时间 CREATE TABLE t1 ( dt DATETIME D ...
- mysql迁移到pqsql笔记
在将MySQL迁移到PostgreSQL的过程中,遇到了一些问题,下面是一些简单的解决方案. 使用命令,初始化数据库,并设置postgres的密码 bin\initdb -E UTF-8 -A md5 ...
- Linux 运维工程师面试真题-5-常考题目汇总
Linux 运维工程师面试真题-5-常考题目汇总 1.解释下什么是 GPL,GNU,自由软件? GPL:(通用公共许可证):一种授权,任何人有权取得.修改.重新发布自由软件的权力. GNU:(革奴计划 ...