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; }。记住:编译器会忽略空格。但是,多行使代码更易读。
  • 第 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;
}

\nendl 都用于换行。然而,\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++ 语法:从基础知识到高级应用的更多相关文章

  1. 爬虫基础---HTTP协议理解、网页的基础知识、爬虫的基本原理

    一.HTTP协议的理解 URL和URI 在学习HTTP之前我们需要了解一下URL.URI(精确的说明某资源的位置以及如果去访问它) URL:Universal Resource Locator 统一资 ...

  2. jsp学习--基本语法和基础知识

    一.JSP简单介绍 1.什么是JSP? JSP全称是Java Server Pages,它和servle技术一样,都是SUN公司定义的一种用于开发动态web资源的技术. JSP这门技术的最大的特点在于 ...

  3. JS基础语法---数组基础知识总结

     数组: 存储一组有序的数据  数组的作用: 一次性存储多个数据 数组的定义方式: 1.构造函数定义数组: var 数组名=new Array(); 2.字面量方式定义数组: var 数组名=[]; ...

  4. C#基础知识1-深入理解值类型和引用类型

    C#值类型和引用类型这个概念在刚学习的时候应该就知道了.但是我们并没有深入的去理解它.越是基础知识其实才是最有用的.对代码的优化,代码质量的提升都有帮助.通过整理本文章,对很多知识也起到了巩固的作用吧 ...

  5. TCP/IP 和HTTP 协议基础知识

    来源:http://www.myhack58.com/Article/60/63/2014/50072.htm 相信不少初学手机联网开发的朋友都想知道Http与Socket连接究竟有什么区别,希望通过 ...

  6. 你不得不知的Java基础知识

    本篇博客主要记录Java中面向对象的概念和Java语法的基础知识. 面向对象 什么是面向对象 面向对象是一种优秀的软件设计思想,是相对于面向过程.面向切面等设计思想的一种软件设计理念.它的核心思想是运 ...

  7. 深入理解python(一)python语法总结:基础知识和对python中对象的理解

    用python也用了两年了,趁这次疫情想好好整理下. 大概想法是先对python一些知识点进行总结,之后就是根据python内核源码来对python的实现方式进行学习,不会阅读整个源码,,,但是应该会 ...

  8. php基础知识(语法与原理)

    一.php简介 PHP超文本预处理器.是嵌入HTML文件中的服务器脚本程序. PHP代码标记:<?php …. ?> PHP文件的扩展名:.php PHP文件的执行:必须从域名开始访问 P ...

  9. mysql基础知识语法汇总整理(一)

    mysql基础知识语法汇总整理(二)   连接数据库操作 /*连接mysql*/ mysql -h 地址 -P 端口 -u 用户名 -p 密码 例如: mysql -u root -p **** /* ...

  10. JavaSE 基础知识(常识概念 + 基础语法)问答总结/面试题 —— 讲给应届生的 Java 开源知识项目

    写在最前面 这个项目是从20年末就立好的 flag,经过几年的学习,回过头再去看很多知识点又有新的理解.所以趁着找实习的准备,结合以前的学习储备,创建一个主要针对应届生和初学者的 Java 开源知识项 ...

随机推荐

  1. python装饰器保留原有函数名称和属性functools.wraps()

    # python装饰器在实现的时候,被装饰后的函数其实已经是另外一个函数了(函数名等函数属性会发生改变),为了不影响,python的functools包中提供了一个叫wraps的decorator来消 ...

  2. 设置 sudo 无需输入密码

    * 设置 sudo 无需输入密码,如下:* [root@localhost ~]# visudo* 在"root ALL=(ALL) ALL"这一行下面,再加入一行:* 将原来的: ...

  3. SSH原理与实践(二)

    主页 个人微信公众号:密码应用技术实战 个人博客园首页:https://www.cnblogs.com/informatics/ 引言 在上一篇文章[ssh原理与实践(一)]中我们详细介绍了SSH两种 ...

  4. CYQ.Data 操作 Redis 性能测试:对比 StackExchange.Redis

    前言: 前几天,点开自己的博客,看了一下 CYQ.Data V5系列 都有哪些文章, 发现了一篇2019年写的:CYQ.Data 对于分布式缓存Redis.MemCache高可用的改进及性能测试,于是 ...

  5. ReACT介绍与llama_index ReActAgent实践

    Agent是大模型的重要应用方向,而ReACT是学术界提出的重要方法,本文介绍ReACT论文,然后通过llama_index ReActAgent来分析ReACT的执行过程. ReACT <RE ...

  6. CRC常用参数模型及C#代码实现

    目录 参数模型 算法实现 CRC-32 CRC-32/MPEG-2 表生成算法 参考资料 本文源码 参数模型 CRC即循环冗余校验码(Cyclic Redundancy Check):是数据通信领域中 ...

  7. Typora自定义主题详解--打造自己的专属样式

    你真的会使用Typora吗? 欢迎关注博主公众号「Java大师」, 专注于分享Java领域干货文章, 关注回复「主题」, 获取大师使用的typora主题: http://www.javaman.cn/ ...

  8. vscode自动生成头文件

    Ctrl Shift P 输入:snipp,选配置用户代码片段,新建全局代码片段文件,修改下列模板: { // Place your 全局 snippets here. Each snippet is ...

  9. Android USB开发—USB通信

    USB通信两端分别称为:HOST(USB主机) 与 Device(USB从机/USB配件),常见的主机就是我们的计算机.而Android 可以支持USB主机模式与USB配件模式,意思就是Android ...

  10. 【leetcode https://leetcode.cn/problems/count-integers-in-intervals/】 线段树

    leetccode count-integers-in-intervals 线段树解决: class CountIntervals { Seg root; public CountIntervals( ...