章节目录:
一、C++ 入门
1.1 程序编写
-
C++ vesion:11
-
C++ IDE:CLion
-
编写一个 C++ 程序总共分为 4 个步骤:
- 创建项目;
- 创建文件;
- 编写代码;
- 运行程序。
-
第一段代码:
#include<iostream>
/*
在 C++ 中,std 是一个重要的命名空间,代表标准库(Standard Library)。
标准库是 C++ 提供的一个丰富的函数、类和模板集合,提供了许多常用的功能和工具,包括输入输出、容器、算法、字符串处理、数学函数等。
它类似于 Java 中的 java.lang 包,其中包含了 Java 的核心类。
*/
using namespace std;
int main() {
// 在 C++ 中,std::cout 是用于标准输出的流对象,类似于 Java 中的 System.out。
// `<<` 为输出运算符。
// endl:表示换行并刷新输出流,类似于 "\n" 。
cout << "Hello world" << endl;
return 0;
}
1.2 注释
- 单行注释:
// 这是单行注释。
- 多行注释:
/*
这是多行注释。
*/
1.3 变量
- 代码示例:
#include<iostream>
using namespace std;
int main() {
// 变量的定义:数据类型 变量名 = 初始值
int a = 10;
cout << "a = " << a << endl;
// a = 10
return 0;
}
- 注意:C++ 在创建变量时,必须给变量一个初始值,否则会报错。
- 提示:初始化不是赋值,初始化的含义是创建变量时赋予其一个初始值,而赋值的含义是把对象的当前值擦除,而以一个新值来替代。
- 如果定义变量时,没有指定初始值,则变量被默认初始化,此时变量被赋予了“默认值”。
- 绝大多数类都支持无须显式初始化而定义对象,这样的类提供了一个合适的默认值。例如:
// empty 非显式地初始化为一个空串。
std::string empty;
1.4 常量
C++ 定义常量两种方式:宏常量和
const
修饰,用于记录程序中不可更改的数据。
- 方式一:#define 宏常量
#include<iostream>
using namespace std;
// 常量值通常在文件上方定义,表示一个常量。
// #define 常量名。
#define MONTH 12
int main() {
cout << "MONTH = " << MONTH << endl;
// MONTH = 12
int MONTH = 11;
// 语法错误:“常数”
return 0;
}
- 方式二:const 修饰的变量:
#include<iostream>
using namespace std;
int main() {
// const 数据类型 常量名 = 常量值
// 通常在变量定义前加关键字 `const`,修饰该变量为常量,不可修改。
const int MONTH = 12;
cout << "MONTH = " << MONTH << endl;
// MONTH = 12
const int MONTH = 11;
// error: redefinition of 'MONTH'
return 0;
}
- 提示:把常量定义为大写字母形式,是一个很好的编程实践。
1.5 关键字
关键字是 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 |
1.6 变量命名规则
- 标识符不能是关键字。
- 标识符只能由字母、数字、下划线组成。
- 第一个字符必须为字母或下划线。
- 标识符中字母区分大小写。
- 提示:尽量做到见名知意。
二、数据类型
C++ 规定在创建一个变量或者常量时,必须要指定出相应的数据类型,否则无法给变量分配内存。
2.1 整型
- C++ 中能够表示整型的类型有以下几种方式,区别在于所占内存空间不同:
数据类型 | 占用空间 | 取值范围 |
---|---|---|
short (短整型) | 2 字节 | (-2^15 ~ 2^15-1) |
int (整型) | 4 字节 | (-2^31 ~ 2^31-1) |
long (长整型) | Windows 为4字节,Linux 为4字节(32位),8字节(64位) | (-2^31 ~ 2^31-1) |
long long (长长整型) | 8 字节 | (-2^63 ~ 2^63-1) |
- 其中,数据类型
long
long
是在 C++ 11 中新定义的。
2.2 带符号和无符号类型
- 除去布尔型和拓展的字符型之外,其他整型可以划分为带符号的(
signed
)和 无符号的(unsigned
)两种。 - 带符号类型可以表示正数、负数或 0,无符号类型则仅能表示大于 0 的值。
- 类型
int
、short
、long
和long
、long
都是带符号的,通过在这些类型名前添加unsigned
就可以得到无符号类型,例如unsinged
long
。类型unsigned
int
可以缩写为unsigned
。
2.3 sizeof 关键字
利用
sizeof
关键字可以统计数据类型所占内存大小。
- 语法格式:
sizeof( 数据类型 / 变量)
- 代码示例:
#include<iostream>
using namespace std;
int main() {
cout << "short size=" << sizeof(short) << endl;
// short size = 2
cout << "int size=" << sizeof(int) << endl;
// int size = 4
cout << "long size=" << sizeof(long) << endl;
// long size = 4 (win)
// long size = 8 (unix)
cout << "long long size=" << sizeof(long long) << endl;
// long long size = 8
return 0;
}
2.4 实型(浮点型)
表示小数。
- 浮点型变量分为两种,区别在于表示的有效数字范围不同:
数据类型 | 占用空间 | 有效数字范围 |
---|---|---|
float | 4字节 | 7位有效数字 |
double | 8字节 | 15~16位有效数字 |
- 代码示例:
#include<iostream>
using namespace std;
int main() {
// 定义单精度、双精度实型。
float f_num = 0.3f;
cout << "float size =" << sizeof(f_num) << endl;
// float size =4
double d_num = 0.4;
cout << "double size =" << sizeof(d_num) << endl;
// double size = 8
// 科学计数。
float num1 = 3e-1;
cout << "num1 =" << num1 << endl;
// num1 =0.3
return 0;
}
2.5 字符型
字符型变量用于显示单个字符。
- 定义字符变量:
#include <iostream>
using namespace std;
int main() {
// 注意:不能使用双引号!
char s = 'a';
cout << s << endl;
// a
return 0;
}
- 注意事项:
- 在显示字符型变量时,用单引号将字符括起来,不要用双引号。
- 单引号内只能有一个字符,不可以是字符串。
- 补充说明:
- C 和 C++ 中字符型变量只占用 1 个字节。
- 字符型变量并不是把字符本身放到内存中存储,而是将对应的 ASCII 编码放入到存储单元。
2.6 字符串型
有两种方式定义字符串。
- 方式一:C 风格定义字符串
#include<iostream>
using namespace std;
int main() {
// C 语言风格定义格式:char 变量名[] = "字符串值"
char name[] = "jan";
cout << name << endl;
// jan
return 0;
}
- 方式二:C ++ 风格定义字符串
#include<iostream>
// 这里 <iostream> 头文件,它会隐式地包含 <string> 头文件。
using namespace std;
int main() {
// C++ 语言风格定义格式:string 变量名 = "字符串值"
// 提示:这种风格定义,需要加入头文件 #include<string> 。
string name = "jan";
cout << name << endl;
// jan
return 0;
}
2.7 转义序列
一些特殊含义的字符(如单引号、双引号、问号、反斜线)。需要用到转义字符,它们均以反斜线作为开始。
- C++ 语言规定的转义序列包括:
转义序列 | 作用 |
---|---|
换行符 | \n |
纵向制表符 | \v |
反斜线 | \\ |
回车符 | \r |
横向制表符 | \t |
退格符 | \b |
问号 | \? |
进纸符 | \f |
报警(响铃)符 | \a |
双引号 | \" |
单引号 | \' |
2.8 布尔类型
布尔数据类型代表真或假的值。
-
bool
类型只有两个值:-
true
:表示真。 -
false
:表示假。
-
-
bool
类型占 1 个字节大小。 -
代码示例:
#include<iostream>
using namespace std;
int main() {
// 定义 bool 变量,初始值设置为 true。
bool flag = true;
cout << flag << endl;
// 1
// 再次赋值为 false。
flag = false;
cout << flag << endl;
// 0
// bool 变量所占字节大小。
cout << "bool size =" << sizeof(flag) << endl;
// bool size =1
return 0;
}
2.9 类型选择建议
- 明确数值不能为负,选用无符号类型。
- 一般使用
int
执行整数运算,如果数值超过了int
范围则选用long
long
。 - 在算术表达式中尽量不要使用
char
或bool
,只有在存放字符或布尔值时才使用它们。(因为char
在一些机器上是有符号,在一些机器上又是无符号的,使用的话可能会出现问题。) - 如果需要一个不大的整数,可以明确指定为
singed
char
或unsigned
char
。 - 执行浮点数运算选用
double
。(因为float
通常精度不够且两种精度计算代价差距较小。) long
double
提供的精度在一般情况下是没有必要的,并且它带来的运算开销也不能忽视。
三、获取数据输入
cin >> 变量
用于从键盘获取数据。
- 代码示例:
#include<iostream>
using namespace std;
int main() {
string name;
cout << "input name:" << endl;
// 接收输入。
cin >> name;
cout << "hello " + name << endl;
// input name:
// jan
// hello jan
return 0;
}
四、结束语
“-------怕什么真理无穷,进一寸有一寸的欢喜。”
微信公众号搜索:饺子泡牛奶。