Skip to content

第一章 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++中可以使用的常用数据类型:

类型类型标识符字节数数值范围
整形int4−231 ~ 231−1
无符号整形unsigned int40 ~ 232−1
短整型short2−215 ~ 215−1
长整型long4−231 ~ 231−1
字符型char1−27 ~ 27−1
无符号字符型unsigned char10 ~ 28−1
单精度浮点数float4±3.4×10−38 ~ ±3.4×1038
双精度浮点数double8±1.7×10−308 ~ ±1.7×10308
布尔型bool1true / 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 + 3a += 3
-=a = a - 3a -= 3
*=x = x * (y+8)x *= y+8
/=x = x / 8x /= 8
%=x = x % 3x %= 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位