第1章 Day1: 开始学习C++
1)课程内容
以《C++ Primer Plus》和《C++ Primer》两本书为参照。
包含了C++11标准(C++11之后的标准仍未普及)。
结合项目开发的经验,突出其中的重点。
2)运行C++程序
选择“调试->开始执行“菜单,或快捷键Ctrl+F5运行程序。
3)示例
// 包含头文件。
#include <iostream>
// main函数,程序从这里开始执行,每个程序只能有一个main函数。
int main()
{
// 在控制台输出一首诗。
std::cout << "\n\n 我是一只傻傻鸟\n";
std::cout << " 生活美好如鲜花,不懂享受是傻瓜;\n";
std::cout << " 傻呀傻呀傻呀傻,不如小鸟和乌鸦。\n";
std::cout << " 芳草地啊美如画,谁要不去是傻瓜;\n";
std::cout << " 我是一只傻傻鸟,独在枯枝丫上趴。\n";
// std::cout 向控制台输出内容的指令,只能小写,不能用大写。
// << 输出的运算符。
// "" 字符串内容的边界符,半角。
// Hello World! 输出字符串的内容,可以是中文、英文和任意符号,半角的双引号除外。
// \n 输出一个换行。
// ; C++语句结束的标志,半角。
}
4、C++输出数据
数据是信息的载体,写程序的目的就是为了处理数据。
1)数据的分类
数据有数字、字符和字符串三种类型。
- 数字:直接书写,如:100、18.52、0、9;
- 字符:用半角的单引号包含的一个符号,如:’A’、’Z’、’0’、’9’、’~’、’+’,汉字和全角的标点符号不是字符;
- 字符串:用半角的双引号包含的多个符号,如:”Hello World”、”我是一只傻鸟”、”西施”、”100″、”X”。
2)输出数据
- std::cout可以输出各种类型的数据;
- <<操作符可以拼接多个数据项;
- std::endl也可以用于换行;
- using namespace std;指定缺省的命名空间。
3)示例
#include <iostream>
// 指定缺省的命名空间。
using namespace std;
int main()
{
// 用多个数据项输出超女信息,姓名:西施;年龄:25;体重:48.5;性别:X
// std::cout << "姓名:西施;年龄:25;体重:48.5;性别:X\n";
cout << "姓名:" << "西施" << ";年龄:" << 25 << ";体重:" << 48.5
<< ";性别:" << 'X' << endl;
}
5、程序的注释
在程序中添加的说明文字,对代码的流程或功能加以解释,方便自己和其他的程序员阅读和理解代码。
编译器在编译源代码的时候,会忽略注释。
1)单行注释
用两根反斜线打头,一般放在代码的上方,或者一行语句的末尾。
注意:字符串内容中的两根反斜线是内容的一部分,不是注释。
2)多行注释
从/*开始,到*/结束,把一些内容夹住。
注意:a)字符串内容中的/*和*/是内容的一部分,不是注释;b)/*和*/可以出现在一行代码的中间。
3)注释的注释
单行注释可以注释多行注释,多行注释也可以注释单行注释,但是,不建议使用。
4)VS中的快捷键
添加注释:Ctrl+k+c
取消注释:Ctrl+k+u
5)示例
// 包含头文件。
#include <iostream>
using namespace std; // 指定缺省的命名空间。
// main函数,程序从这里开始执行,每个程序只能有一个main函数。
int main()
{
// 在控制台输出一首诗。
cout << "\n\n 我是一只傻傻鸟\n";
cout << " 生活美好如鲜花,不懂享受是傻瓜;\n";
cout << " 傻呀傻呀傻呀傻,不如小鸟和乌鸦。\n";
cout << " 芳草地啊美如画,谁要不去是傻瓜;\n";
cout << " 我是一只傻傻鸟,独在枯枝丫上趴。\n";
cout << "姓名:" << "西施" << /*";年龄:" << 25 << */";体重:" << 48.5 << "。" << endl;
/*
std::cout 向控制台输出内容的指令,只能小写,不能用大写。
<< 输出的运算符。
"" 字符串内容的边界符,半角。
Hello World! 输出字符串的内容,可以是中文、英文和任意符号,半角的双引号除外。
\n 输出一个换行。
; C++语句结束的标志,半角。
*/
}
6、使用变量
变量是内存变量的简称,用于存放数据。
1)声明变量
变量在使用之前要先声明。
语法:数据类型 变量名
C++常用的数据类型有五种:整数(int)、浮点数(float和double)、字符(char)、字符串(string)和布尔(bool)。
变量在声明的时候可以赋初始值。
语法:数据类型 变量名=值
2)变量的赋值
语法:变量名=值
3)示例
#include <iostream> // 包含头文件。
using namespace std; // 指定缺省的命名空间。
// main函数,程序从这里开始执行,每个程序只能有一个main函数。
int main()
{
// 整数(int)、浮点数(float和double)、字符(char)、字符串(string)和布尔(bool)。
// 超女基本信息:姓名、年龄、体重、性别、颜值。
// 声明变量,存放超女基本信息的数据项。
string name = "西施"; // 姓名。
int age = 25; // 年龄。
double weight = 48.6; // 体重(kg)。
char sex = 'X'; // 性别:X-女;Y-男。
bool yz = false; // 颜值:true-漂亮;false-不漂亮。
cout << "姓名:" << name << ",年龄:" << age << ",体重:" << weight
<< ",性别:" << sex << ",颜值:" << yz << endl;
name = "冰冰"; // 字符串有双引号包含。
age = 23; // 整数直接书写。
weight = 50.5; // 浮点数直接书写。
sex = 'X'; // 字符用单引号包含。
yz = true; // 布尔型取值只能是true和false,或1和0。
cout << "姓名:" << name << ",年龄:" << age << ",体重:" << weight
<< ",性别:" << sex << ",颜值:" << yz << endl;
}
注意,布尔型变量输出的时候,如果值是true,将显示1,false显示0。
7、使用常量
常量是程序中固定不变的数据。
1)宏常量
一般在main函数的上面声明,用大写命名。
语法:#define 常量名 值
2)const修饰的变量
在程序的任何地方都可以声明。
语法:const 数据类型 常量名=值
3)常量的特点
程序中不允许改变常量的值,否则编译的时候会报错。
4)示例
#include <iostream> // 包含头文件。
#define MONTHS 12 // 一年中的月份数。
#define PI 3.14159 // 圆周率。
using namespace std; // 指定缺省的命名空间。
// main函数,程序从这里开始执行,每个程序只能有一个main函数。
int main()
{
const int days = 7; // 一个星期中的天数。
cout << “一年有” << MONTHS << “个月。” << endl;
cout << “圆周率的值是:” << PI << endl;
cout << “一个星期有” << days << “天。\n”;
}
8、标识符的命名
1)C++命名规则
C++规定给标识符(变量、常量、函数、结构体、类等)命名时,必须遵守以下规则。
- 在名称中只能使用字母字符、数字和下划线;
- 名称的第一个字符不能是数字;
- 名称区分大写字符与小写字符;
- 不能将C++关键字用作名称;
- 以下划线和大写字母打头的名称被保留给编译器及其使用的资源使用,如果违反了这一规则,会导致行为的不确定性。
- C++对名称的长度没有限制,但有些平台可能有长度限制(64字符)。
C++提倡有一定含义的名称(望名知义)。
2)C++关键字
每个C++关键字都有特殊的含义,用于声明类型、对象、函数、命名空间等,程序中不能声明与关键字同名的标识符。
asm | do | if | return | typedef |
auto | double | inline | short | typeid |
bool | dynamic_cast | int | signed | typename |
break | else | long | sizeof | union |
case | enum | mutable | static | unsigned |
catch | explicit | namespace | static_cast | using |
char | export | new | struct | virtual |
class | extern | operator | switch | void |
const | false | private | template | volatile |
const_cast | float | protected | this | wchar_t |
continue | for | public | throw | while |
default | friend | register | true | |
delete | goto | reinterpret_cast | try |
9、输入数据
程序输入数据的方式有多种。
- 从控制台的界面中输入(网页、PC桌面程序、APP程序);
- 从文件中读取;
- 从数据库中读取;
- 从网络中读取。
1)用std::cin输入数据
语法:std::cin>>变量名;
注意:
- a)布尔型变量的值在计算机内部用1(true)和0(false)存储;b)程序中可以书写true和false,也可以书写1和0,其它值将强制转换成1;c)用cin输入时可以填1和0,其它值也强制转换成1;d)用cout输出时只显示1和0,不显示true和false。
- 如果输入的数据与变量的数据类型不匹配,会导致行为的不确定性。
2)示例
#include <iostream> // 包含头文件。
using namespace std; // 指定缺省的命名空间。
// main函数,程序从这里开始执行,每个程序只能有一个main函数。
int main()
{
string name; // 姓名。
cout << “请输入超女的姓名:”;
cin >> name;
cout << “输入的超女姓名是:” << name << endl;
int age; // 年龄。
cout << “请输入超女的年龄:”;
cin >> age;
cout << “输入的超女年龄是:” << age << endl;
double weight; // 体重(kg)。
cout << “请输入超女的体重(kg):”;
cin >> weight;
cout << “输入的超女体重是:” << weight << endl;
char sex; // 性别:X-女;Y-男。
cout << “请输入超女的性别(X-女;Y-男):”;
cin >> sex;
cout << “输入的超女性别是:” << sex << endl;
bool yz; // 颜值:true-漂亮;false-不漂亮。
cout << “请问输入超女的颜值(1-漂亮;0-不漂亮):”;
cin >> yz;
cout << “输入的超女颜值是:” << yz << endl;
}
10、算术运算
运算符 | 描述 |
+ | 两个数相加。 |
– | 一个数减另一个数。 |
* | 两个数相乘。 |
/ | 分子除以分母。 |
% | 取模运算,整除后的余数。 |
注意:
- 整数进行除法运算时,如果分母为0,程序将异常退出;
- 浮点数进行除法运算时,如果分母为0.0,将得到inf(infinite,无穷大);
- 两个整数进行除法运算时,将舍去小数部分,得到一个整数;
- 整数与浮点数进行除法运算时,得到的结果是浮点数;
- 进行除法运算时,在整数前面加(float)或(double)可以将整数转换为float或double类型;
- 取模运算只能用于整数(分母也不能为0)。