C++重学之路 2 C++编程入门、输入输出和运算符

1 基础概念

注释

程序运行时,注释会被编译器忽略,不会生成任何机器语言目标代码。

  • 单行注释(single-line comment):以双斜线// 开头,只对此行有效。
  • 多行注释:可包括若干行,注释的内容用一对符号/**/ 括起来。

Tips:每个程序的开始都应该有一个注释用以描述这个程序的目的。

#include预处理指令

#include<iostream>

以“#”开头的行在程序被编译之前由预处理器来处理。这一行通知预处理器将输入/输出流头文件<iostream> 的内容包含到程序中。任何程序,只要使用C++的流输入/输出来将数据输出到屏幕或者从键盘键入数据,都必须包含这个头文件。这个头文件包含了编译器在编译程序时要用到的信息。

空行和空白间隔符

为易于阅读,程序员常使用空行、空格符和制表符(Tab),这些符号统称为空白间隔符。编译器通常会忽略空白间隔符。

main()函数

int main()

每个C++程序有且仅有一个main函数。C++程序从main函数开始执行,即使main不是定义在程序里的第一个函数。main左边的==关键字(keyword)==表明main返回一个整数值。

一条输出语句

std::cout<<"Welcome to C++!\n";

这条输出语句命令计算机执行一个操作,即输出包含在两个双引号之间的一串字符。把两个双引号和它们之间的字符一起称为串(string)、字符串(character string)或者串文字(string literal)。编译器不会忽略串中的空白间隔符

大多数C++语句以一个分号(也成为语句终止符)结尾(预处理指令不是)。一般C++的输入和输出用字符流实现。当执行以上语句时,字符流"Welcome to C++!\n"被发送到标准输出流对象std::cout,它通常“连接”到屏幕。

Tips:

遗漏C++语句末尾的分号是一个语法错误(syntax error),因为编译器是在编译阶段中发现语法错误的,所以语法错误也称为编译器错误(compiler errors)、编译时错误(compile-time errors)或编译错误(compilation errors)。只有改正后才能运行这个程序。

std命名空间

但是用预处理指令#include<iostream> 包含到程序中的名字时,cout前的std::是必需的。

std::cout 指出使用了“名字空间”std中的一个名字,即cout。cin也属于名字空间std。

流插入运算符和转义序列

在输出语句中,双尖括号<< 运算符称为流插入运算符(stream insertion operator)。当程序运行时,运算符右边的值(右操作数)被插入到输入流中。这个运算符指向数据流动的方向。

反斜线符号(\)称为转义字符(escape character),它表明一个特殊字符会被输出。常用的一些转义字符如下:

转义序列
\n换行符
\t水平制表符
\r回车符
\a响铃符,系统发出响铃声
\反斜线符号
单引号
‘’双引号

return语句

return 0;

这是我们用来退出函数的几种方法之一。如上,在main的末尾使用return语句时,0表示这个程序成功地终止了。根据C++标准,如果程序执行到main末尾但没遇到return语句,就会认为程序成功地终止了(所以常省略)。

关于注释的说明

当编写新的程序或者修改已有程序使得代码发生改变时,要及时更新注释。

变量声明

int sum = 0;

这是声明语句(declaration)。标识符sum是变量名。这个声明指定变量sum是int类型的数据,这意味着这些变量可以存储整数值。同时该声明还将这个变量初始化位0。

变量代表计算机内存中的一个特定区域,可以存储程序使用的一个值。

Tips:

尽管显式地初始化每个变量不总是必要的,但这样做可以帮助避免很多问题。

同类型的若干个变量可以在一个变量中声明,例如:

int num1 = 0,num2 = 1,num3 = 2;
int num1,num2,num3;

标识符(identifier)

变量名是除了关键字之外的合法标识符。标识符是不以数字开头的由字母、数字、下划线(_)组成的一个字符序列。C++是区分大小写的,即ai和AI是不同的标识符。

Tips:

  • C++允许任意长度的标识符,但大家都C++实现可能对标识符的长度强加了一些限制。为确保可移植性,应使用31或少于31个字符的标识符。
  • 应当避免在标识符中使用缩写,以提高程序的可读性。
  • 应当避免使用以下划线或双下划线开头的标识符,因为C++编译器可能使用类似的名字为其内部的某些用途提供服务。

变量声明语句的放置位置

可在程序的任意位置出现,但必须在相应的变量被程序使用前。

输入语句

std::cin>>number1;

使用(在名字空间std中的)标准输入流对象cin和流提取运算符>> 来获取从键盘输入的值。流提取运算符同std::cin 的配合使用,目的是获取从标准输入流(通常是键盘)输入的字符。

显示结果

std::cout<<"Sum is "<<sum<<std::endl;

std::endl 是一个所谓的流操纵符(stream manipulator)。endl是“end line”的缩写,属于名字空间std。流操纵符std::endl 输出一个换行符,然后“刷新输出缓存”。

在单条语句中使用多个流插入运算符称为连接(concatenating)、链接(chaining)或串联(cascading)的流插入运算。

2 内存的概念

变量名对应着计算机内存中的特定区域。将一个值存放到一块内存区域时,它都会覆盖这个区域中原有的值,因此,存放一个新值到一块内存区域的操作是具有破坏性的。

std::cin>>number1;
std::cin>>number2;
sum = number1 + number2;

执行以上代码时,假设先后输入45,72,那么内存状况如图。

在这里插入图片描述

但这两块区域在内存中不一定必须是相邻的。

第3行语句执行后会将原先存放在sum的值替换掉,但number1和number2的值在求sum前后是不变的。因此,当从一个内存区域中读取一个值时,这个操作是非破坏性的。

3 算术运算

算术运算符的优先级

运算符运算求值顺序
()圆括号1 最先求值。若为嵌套,则先求最内层圆括号内的表达式。若有多对圆括号不是嵌套的如(a+b)*(c-d) ,C++标准并没指定这些被括起来的子表达式的计算顺序
*乘法2 其次求值。若多个同时出现,从左到右顺序求值。
/除法2
%求模2
+加法3 最后求值。若多个同时出现,从左到右顺序求值。
-减法3

4 相等运算符和关系运算符

相等运算符和关系运算符的优先级

所有的关系运算符具有相同的优先级,并且按照从左到右的顺序结合。

两个相等运算符具有相同的优先级,但优先级比关系运算符低,也按从左到右顺序结合。

关系运算符>大于
<小于
>=大于等于
<=小于等于
相等运算符==等于
!=不等于

TIPS:

  • 颠倒运算符!=>=<= 的符号对中两个符号的顺序,通常会产生语法错误。但某些情况下把!= 写成=! 不会产生语法错误,但几乎可以肯定是一个逻辑错误(logic error),在运行时会产生影响。
  • 混淆相等运算符== 和赋值运算符= 会产生逻辑错误。

using声明

using namespace std;

这个命令可以使程序包含任何标准的C++头文件(如<iostream>)中的所有名字。

5 运算符的优先级

运算符结合律
()从左到右
* / %从左到右
+ -从左到右
<< >>从左到右
< <= > >=从左到右
== !=从左到右
=从右到左
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
1.项目代码功能经验证ok,确保稳定可靠运行。欢迎下载使用! 2.主要针对各个计算机相关专业,包括计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网等领域的在校学生、专业教师或企业员工使用。 3.项目具有丰富的拓展空间,不仅可作为入门进阶,也可直接作为毕设、课程设计、大作业、初期项目立项演示等用途。 4.当然也鼓励大家基于此进行二次开发。在使用过程中,如有问题或建议,请及时私信沟通。 5.期待你能在项目中找到乐趣和灵感,也欢迎你的分享和反馈! 【资源说明】 通信录的设计 1、问题描述: 设计一简单的通讯录管理系统可以对通信录进行简单管理,系统的主要功能:显示所有 记录,分类显示,分别按姓名和电话查询记录,添加、删除和修改联系人,保存记录等。 2、设计要求: (1)使用面向对象编程思想编写开发过程中需要用到的类,比如:人员(person)类包 括姓名、性别、电话、QQ和类别(亲人、同学、朋友等)。通信录类,实现对各类人员的操 作。 (2)输入和输出可以使用文本文件重定向输入(保存数据为磁盘文件);也可以使用标 准输入输出进行(提交时需要提交TXT格式输入数据)。比如用文本文件(总数 20 人以上)包 含各类人员的信息,程序运行时进行初始化数据,使用 vector 数组存放。并能保存数据为磁 盘文件。 (3)要求对<<和>>运算符进行重载,实现信息的输入,输出。 (4)程序运行显示菜单功能,添加联系人,根据姓名修改记录,显示所有记录,分类显 示,查找记录,删除记录,保存记录。 3、问题的解决方案: 根据系统功能要求,可以将问题解决分为以下步骤: (1) 应用系统分析,建立该系统的功能模块框图以及界面的组织和设计; (2) 分析系统中的各个实体及它们之间的关系; (3) 根据问题描述,设计系统的类层次; (4) 完成类层次中各个类的描述; (5) 完成类中各个成员函数的定义; (6) 完成系统的应用模块; (7) 功能调试; (8) 完成系统总结报告。
本书作者根据自己学习C++的亲身体会及多年教学经验,用简单的例子和简练的叙述讲解C++编程,别具特色。 全书共分十八章,内容涉及对象的演化、数据抽象、隐藏实现、初始化与清除、函数重载与缺省参数、输入输出流介绍、常量、内联函数、命名控制、引用和拷贝构造函数、运算符重载、动态对象创建、继承和组合、多态和虚函数、模板和包容器类、多重继承、异常处理和运行时类型识别。 本书作为正式教材和自学用书均非常优秀,作为程序设计者的参考用书亦极为合适。 目 录 译者序 前言 第1章 对象的演化 1 1.1 基本概念 1 1.1.1 对象:特性+行为 1 1.1.2 继承:类型关系 1 1.1.3 多态性 2 1.1.4 操作概念:OOP程序像什么 3 1.2 为什么C++会成功 3 1.2.1 较好的C 3 1.2.2 采用渐进的学习方式 4 1.2.3 运行效率 4 1.2.4 系统更容易表达和理解 4 1.2.5 “库”使你事半功倍 4 1.2.6 错误处理 5 1.2.7 大程序设计 5 1.3 方法学介绍 5 1.3.1 复杂性 5 1.3.2 内部原则 6 1.3.3 外部原则 7 1.3.4 对象设计的五个阶段 9 1.3.5 方法承诺什么 10 1.3.6 方法应当提供什么 10 1.4 起草:最小的方法 12 1.4.1 前提 13 1.4.2 高概念 14 1.4.3 论述(treatment) 14 1.4.4 结构化 14 1.4.5 开发 16 1.4.6 重写 17 1.4.7 逻辑 17 1.5 其他方法 17 1.5.1 Booch 18 1.5.2 责任驱动的设计(RDD) 19 1.5.3 对象建模技术(OMT) 19 1.6 为向OOP转变而采取的策略 19 1.6.1 逐步进入OOP 19 1.6.2 管理障碍 20 1.7 小结 21 第2章 数据抽象 22 2.1 声明与定义 22 2.2 一个袖珍C库 23 2.3 放在一起:项目创建工具 29 2.4 什么是非正常 29 2.5 基本对象 30 2.6 什么是对象 34 2.7 抽象数据类型 35 2.8 对象细节 35 2.9 头文件形式 36 2.10 嵌套结构 37 2.11 小结 41 2.12 练习 41 第3章 隐藏实现 42 3.1 设置限制 42 3.2 C++的存取控制 42 3.3 友元 44 3.3.1 嵌套友元 45 3.3.2 它是纯的吗 48 3.4 对象布局 48 3.5 类 48 3.5.1 用存取控制来修改stash 50 3.5.2 用存取控制来修改stack 51 3.6 句柄类(handle classes) 51 3.6.1 可见的实现部分 51 3.6.2 减少重复编译 52 3.7 小结 54 3.8 练习 54 第4章 初始化与清除 55 4.1 用构造函数确保初始化 55 4.2 用析构函数确保清除 56 4.3 清除定义块 58 4.3.1 for循环 59 4.3.2 空间分配 60 4.4 含有构造函数和析构函数的stash 61 4.5 含有构造函数和析构函数的stack 63 4.6 集合初始化 65 4.7 缺省构造函数 67 4.8 小结 68 4.9 练习 68 第5章 函数重载与缺省参数 69 5.1 范围分解 69 5.1.1 用返回值重载 70 5.1.2 安全类型连接 70 5.2 重载的例子 71 5.3 缺省参数 74 5.4 小结 81 5.5 练习 82 第6章 输入输出流介绍 83 6.1 为什么要用输入输出流 83 6.2 解决输入输出流问题 86 6.2.1 预先了解操作符重载 86 6.2.2 插入符与提取符 87 6.2.3 通常用法 88 6.2.4 面向行的输入 90 6.3 文件输入输出流 91 6.4 输入输出流缓冲 93 6.5 在输入输出流中查找 94 6.6 strstreams 96 6.6.1 为用户分配的存储 96 6.6.2 自动存储分配 98 6.7 输出流格式化 100 6.7.1 内部格式化数据 101 6.7.2 例子 102 6.8 格式化操纵算子 106 6.9 建立操纵算子 108 6.10 输入输出流实例 111 6.10.1 代码生成 111 6.10.2 一个简单的数据记录 117 6.11 小结 123 6.12 练习 123 第7章 常量 124 7.1 值替代 124 7.1.1 头文件里的const 124 7.1.2 const的安全性 125 7.1.3 集合 126 7.1.4 与C语言的区别 126 7.2 指针 127 7.2.1 指向const的指针 127 7.2.2 const指针 127 7.2.3 赋值和类型检查 128 7.3 函数参数和返回值 128 7.3.1 传递const值 128 7.3.2 返回const值 129 7.3.3 传递和返回地址 131 7.4 类 133 7.4.1 类里的const和enum 133 7.4.2 编译期间类里的常量 134 7.4.3 const对象和成员函数 136 7.4.4 只读存储能力 139 7.5 可变的(volatile) 140 7.6 小结 141 7.7 练习 141 第8章 内联函数 142 8.1 预处理器的缺陷 142 8.2 内联函数 144 8.2.1 类内部的内联函数 145 8.2.2 存取函数 146 8.3 内联函数和编译器 150 8.3.1 局限性 150 8.3.2 赋值顺序 150 8.3.3 在构造函数和析构函数里隐藏行为 151 8.4 减少混乱 152 8.5 预处理器的特点 153 8.6 改进的错误检查 154 8.7 小结 155 8.8 练习 155 第9章 命名控制 157 9.1 来自C语言中的静态成员 157 9.1.1 函数内部的静态变量 157 9.1.2 控制连接 160 9.1.3 其他的存储类型指定符 161 9.2 名字空间 161 9.2.1 产生一个名字空间 162 9.2.2 使用名字空间 163 9.3 C++中的静态成员 166 9.3.1 定义静态数据成员的存储 166 9.3.2 嵌套类和局部类 168 9.3.3 静态成员函数 169 9.4 静态初始化的依赖因素 171 9.5 转换连接指定 174 9.6 小结 174 9.7 练习 174 第10章 引用和拷贝构造函数 176 10.1 C++中的指针 176 10.2 C++中的引用 176 10.2.1 函数中的引用 177 10.2.2 参数传递准则 178 10.3 拷贝构造函数 179 10.3.1 传值方式传递和返回 179 10.3.2 拷贝构造函数 182 10.3.3 缺省拷贝构造函数 187 10.3.4 拷贝构造函数方法的选择 188 10.4 指向成员的指针
这是DS小龙哥编写整理的C++入门指南PDF文档,适合C++初学者,C语言转C++工程师当做入门工具书学习。PDF里有完整示例、知识讲解,平时开发都可以复制粘贴,非常便捷。 目前一共写了7章,后续会持续更新资源包,更新后重新下载即可。 这是目前书籍的目录: C++入门指南 1 一、 C++语言基本介绍与开发环境搭建 1 1.1 C++简介 1 1.2 面向对象编程 1 1.3 Windows系统下搭建C++学习环境 2 二、C++基础入门 16 2.1 C++类和对象 17 2.2 C++命名空间 18 2.3 std标准命名空间 20 2.4 C++新增的标准输入输出方法(cin和cout) 22 2.5 C++规定的变量定义位置 24 2.6 C++新增的布尔类型(bool) 24 2.7 C++ 新增的new和delete运算符 25 2.8 C++函数的默认参数(缺省参数) 26 2.9 C++函数重载详解 28 2.10 C++新增的引用语法 30 三、 C++面向对象:类和对象 34 3.1 类的定义和对象的创建 34 3.2 类的成员变量和成员函数 36 3.3 类成员的访问权限以及类的封装 38 3.4 C++类的构造函数与析构函数 39 3.5 对象数组 47 3.6 this指针 50 3.7 static静态成员变量 52 3.8 static静态成员函数 53 3.9 const成员变量和成员函数 55 3.10 const对象(常对象) 56 3.11 友元函数和友元类 58 3.11.3 友元类 61 3.12 C++字符串 62 四、C++面向对象:继承与派生 75 4.1 继承与派生概念介绍 75 4.2 继承的语法介绍 75 4.3 继承方式介绍(继承的权限) 76 4.4 继承时变量与函数名字遮蔽问题 79 4.5 基类和派生类的构造函数 82 4.6 基类和派生类的析构函数 83 4.7 多继承 85 4.8 虚继承和虚基类 88 五、C++多态与抽象类 91 5.1 多态概念介绍 91 5.2 虚函数 92 5.3 纯虚函数和抽象类 95 六、C++运算符重载 97 6.1 运算符重载语法介绍 97 6.2 可重载运算符与不可重载运算符 98 6.3 一元运算符重载 99 6.4 二元运算符重载 102 6.5 关系运算符重载 104 6.6 输入/输出运算符重载(>>、<<) 105 6.7 函数调用运算符 () 重载 106 6.8 重载[ ](下标运算符) 107 七、C++模板和泛型程序设计 108 7.1 函数模板 108 7.2 类模板 110
本资源是压缩包形式的, 里面包含 本书,里面是pdf格式的, 带书签目录,本书是完整版的。 资源都是我自己用过的,不骗大家。 本书作者: 肖俊宇 吴为胜; 出版社: 电子工业出版社 内容简介: 《由浅入深学C++:基础、进阶与必做300题(含DVD光盘1张)》是C++语言的入门教程,较为系统地介绍了C++语言的基础内容。本书共分为3篇22章,详细介绍了C++语言的基础知识、面向对象、标准模块、底层开发和综合案例。本书循序渐进地讲述了C++的基础知识、C++程序的组成及其开发过程、C++程序中的数据、表达式和语句、控制程序流程、数组与字符串、指针与引用、使用函数、函数模板、错误和异常处理、宏和预编译、面向对象的开发、封装、继承、多态、类模板、文件流、标准模板库STL和编程实践等内容。 《由浅入深学C++:基础、进阶与必做300题(含DVD光盘1张)》涉及面广,从基本知识到高级内容和核心概念,再到综合案例,几乎涉及C++开发的所有重要知识。本书适合所有想全面学习C++开发技术的人员阅读,尤其适合没有编程基础的C++语言初学者作为入门教程,也可作为大、中院校师生和培训班的教材,对于C++语言开发爱好者,本书也有较大的参考价值。 章节目录: 第1篇 C++基础篇 第1章 C++概述 1 1.1 引言 1 1.1.1 C++的历史沿革 1 1.1.2 入门C++ 2 1.1.3 编程思想的转变 3 1.2 C++概述 4 1.2.1 C++的特征 5 1.2.2 C与C++的比较 5 1.2.3 C++的应用领域 6 1.3 C++源程序的组成 6 1.3.1 基本组成元素 7 1.3.2 标识符 8 1.3.3 保留字 8 1.3.4 符 8 1.4 C++集成开发环境——DEV-C++ 9 1.4.1 选择C++编译器 9 1.4.2 安装DEV-C++ 10 1.4.3 DEV-C++ IDE简介 11 1.5 第一个C++程序——Hello World 11 1.5.1 创建源程序 11 1.5.2 编译运行 13 1.6 小结 14 1.7 习题 14 第2章 变量与数据类型 18 2.1 常量和变量 18 2.1.1 常量 18 2.1.2 变量 21 2.1.3 变量的定义及赋值 22 2.1.4 变量的应用示例 24 2.2 基本数据类型 25 2.2.1 基本数据类型概述 25 2.2.2 整型数据类型 26 2.2.3 浮点型数据类型 27 2.2.4 字符型数据类型 29 2.2.5 布尔型数据类型 30 2.3 变量的作用域 31 2.4 类型转换 32 2.4.1 隐式转换 32 2.4.2 显式转换 33 2.5 小结 34 2.6 习题 34 第3章 表达式与语句 39 3.1 运算符 39 3.1.1 运算符概述 39 3.1.2 算术运算符 40 3.1.3 自增和自减运算符 42 3.1.4 赋值运算符 43 3.1.5 关系运算符 44 3.1.6 逻辑运算符 45 3.1.7 条件运算符 46 3.1.8 逗运算符 47 3.1.9 位运算符 48 3.1.10 sizeof运算符 49 3.2 运算符的优先级和结合性 50 3.3 表达式 51 3.4 语句 53 3.4.1 空格的作用 53 3.4.2 语句块 54 3.4.3 赋值语句 55 3.4.4 空语句 56 3.5 小结 57 3.6 习题 57 第4章 流程控制结构之顺序结构 63 4.1 程序流程图 63 4.2 表达式语句 64 4.3 格式化输入/输出 65 4.3.1 标准输入流cin 65 4.3.2 标准输出流cout 66 4.3.3 输出流cerr和clog 68 4.4 格式控制函数 69 4.5 格式控制符 71 4.5.1 控制不同进制的输出 72 4.5.2 控制输出宽度 72 4.5.3 控制输出精度 73 4.6 顺序结构综合应用 74 4.7 小结 75 4.8 习题 75

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Lum0s!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值