第一章 C++入门基础 v1.0
第一部分 编译一个程序
一、Hello World
学习任何编程语言,第一步都是输出"Hello, World!"。先创建一个文件 main.cpp:
cpp
#include <iostream>
int main() {
std::cout << "Hello, World!" << std::endl;
return 0;
}代码说明:
#include <iostream>:引入输入输出流库,用于控制台输出int main():程序的入口函数,程序从这里开始执行std::cout:标准输出流,用于在控制台打印内容std::endl:输出换行并刷新缓冲区return 0:程序正常退出
二、编译运行
C++是编译型语言,需要先编译成可执行文件才能运行。打开终端,执行以下命令:
bash
g++ main.cpp -o hello
./hello命令说明:
g++:C++编译器(需要先安装GCC或MinGW)main.cpp:源文件-o hello:指定输出文件名为hello./hello:运行生成的可执行文件
三、常用编译选项
bash
g++ -std=c++17 -Wall -Wextra main.cpp -o hello| 选项 | 说明 |
|---|---|
| -std=c++17 | 指定C++标准版本(可选c++11、c++14、c++17、c++20) |
| -Wall | 开启所有常见警告信息 |
| -Wextra | 开启额外警告信息 |
| -o | 指定输出文件名 |
注意:
-std=c++17只是示例,不同项目可能使用不同标准,具体以项目配置为准。
第二部分 数据类型
一、基本数据类型
C++中可以使用的常用数据类型:
| 类型 | 类型标识符 | 字节数 | 数值范围 |
|---|---|---|---|
| 整形 | int | 4 | |
| 无符号整形 | unsigned int | 4 | |
| 短整型 | short | 2 | |
| 长整型 | long | 4 | |
| 字符型 | char | 1 | |
| 无符号字符型 | unsigned char | 1 | |
| 单精度浮点数 | float | 4 | |
| 双精度浮点数 | double | 8 | |
| 布尔型 | bool | 1 | true / false |
不要把 int 一定是 4 字节、long 一定是 8 字节当成语言规则。它们的实际大小由平台和编译器决定,想确认时用 sizeof 看本机结果。
cpp
#include <iostream>
int main() {
int age = 18;
double price = 9.9;
char grade = 'A';
bool passed = true;
std::cout << age << ' ' << price << ' ' << grade << ' ' << passed << '\n';
std::cout << "int: " << sizeof(int) << " bytes\n";
}二、常量与变量
1. 字符常量
字符常量:用单撇号括起来的一个字符。
字符串常量:用双撇号括起来的一串字符。系统会在字符串结尾自动加一个\0作为字符串结束标志。
cpp
char c;
c = 'a'; // 正确
c = "a"; // 错误,c只能容纳一个字符2. 转义字符
| 字符形式 | 含义 | ASCII代码 |
|---|---|---|
| \n | 换行 | 10 |
| \t | 水平制表(跳到下一个tab位置) | 9 |
| \b | 退格 | 8 |
| \r | 回车 | 13 |
| \0 | 空字符 | 0 |
| \\ | 反斜杠本身 | 92 |
3. 常变量
在定义变量时加上 const,则变量值在程序运行期间不能改变:
cpp
const double pi = 3.1415926;4. 变量命名规则
- 变量只能由数字、字母和下划线组成,且开头不能为数字
- 不能与关键字、系统函数名和类名相同
三、运算符
1. 自加(++)和自减(--)
cpp
int i = 3;
int j;
j = i++; // j = 3,先赋值再加1
j = ++i; // j = 5,先加1再赋值2. 复合赋值运算符
| 复合赋值运算符 | 等价关系式 | 示例 |
|---|---|---|
| += | a = a + 3 | a += 3 |
| -= | a = a - 3 | a -= 3 |
| *= | x = x * (y+8) | x *= y+8 |
| /= | x = x / 8 | x /= 8 |
| %= | x = x % 3 | x %= 3 |
3. 三目运算符
cpp
int max = (a > b) ? a : b;第三部分 输入输出
一、标准输入输出流
cpp
#include <iostream>
int main() {
double radius = 0;
std::cout << "radius: ";
if (!(std::cin >> radius) || radius < 0) {
std::cerr << "invalid radius\n";
return 1;
}
constexpr double pi = 3.1415926;
std::cout << "area: " << pi * radius * radius << '\n';
}二、getline读取含空格的输入
cin 以空格和换行为间隔分割数据,如果一行有空格,需要用 getline:
cpp
string s;
getline(cin, s); // 以换行为间隔分割数据三、输出流
cout:标准输出cerr:标准错误(非缓冲,立即输出)clog:标准日志(缓冲输出)
cpp
std::cout << "标准输出" << std::endl;
std::cerr << "错误输出" << std::endl;
std::clog << "日志输出" << std::endl;四、格式化输出
需要包含 #include <iomanip>:
| 控制符 | 作用 |
|---|---|
| setprecision(n) | 设置实数精度为n位 |
| setw(n) | 设置字段宽度为n位 |
| setfill(c) | 设置填充字符c |
| setiosflags(ios::fixed) | 浮点数以固定小数位数显示 |
| setiosflags(ios::left) | 输出数据左对齐 |
| setiosflags(ios::right) | 输出数据右对齐 |
cpp
cout << setiosflags(ios::fixed) << setprecision(8) << a; // 浮点数精确到小数点后8位