【26小】第3次课——认识字符型

已結束 IOI 開始於: 2026-10-28 18:15 200 小時 主持人: 23

字符型

1. 一句话结论

char 装单个字符,用单引号。

2. 语法形式

char c1 = 'A';       // ✅ 单引号,1 个字符
char c2 = '9';       // ✅ 数字字符(不是数字 9)
char c3 = ' ';       // ✅ 空格也是字符
// char c4 = 'AB';   // ❌ 不能装两个
// char c5 = "A";    // ❌ 双引号是字符串

常用 ASCII 编号:'0'→48 … '9'→57;'A'→65 … 'Z'→90;'a'→97 … 'z'→122。

3. ASCII 码

字符在计算机里用按编号(ASCII 码)存储。

ASCII 表 | 菜鸟教程

4. 最小可运行示例

#include <iostream>
using namespace std;

int main() {
    char c = 'A';
    cout << "char : " << c << endl;
    cout << "code : " << (int)c << endl;          // 看它的编号
    cout << "next : " << (char)(c + 1) << endl;
    return 0;
}

预期输出:

char : A
code : 65
next : B

解释:

  • cout 遇到 char 类型的变量,显示的是字符 A;
  • (int)c 把字符转成整数,显示它的编号 65;
  • c + 1 得 66(此时是 int 类型),再用 (char) 转回字符就是 'B'。

5. 字符的运算

字符运算都是使用ASCII进行,结果都是整型。

  • 字符跟字符进行运算

    cout << '0' + '1';    // 97
    
  • 字符跟整数进行运算

    cout << 'a' + 1;          // 98
    cout << char('a' + 1);    // b
    

大写转小写 + 32,小写转大写 - 32。

数据类型转换

1. 一句话结论

不同类型混着算时,C++ 会自动把小类型临时变成大类型(隐式转换);

也能用手动转换(显式转换)。

2. 语法形式

隐式转换(电脑自动做):

double b = 5;        // int → double,5 变 5.0(安全)
int    c = 3.9;      // double → int,变 3(⚠️ 小数被丢)
double d = 7 / 2;    // ⚠️ 先算 7/2=3,再把 3 变 3.0
double e = 7.0 / 2;  // ✅ 2 先变 2.0,得 3.5

运算规律:两个不同类型一起算,结果取"更大"的那个。 int + double → double; int + int → int; char + int → int。

显式转换(手动指定,推荐这种):

static_cast<目标类型>(值)
int  y  = static_cast<int>(3.9);          // 3(截断,不是四舍五入)
int  n  = static_cast<int>('B');          // 66
char ch = static_cast<char>(66);          // 'B'
double p = static_cast<double>(7) / 2;    // 3.5 ✅

3. 最小可运行示例

#include <iostream>
using namespace std;

int main() {
    int a = 7, b = 2;
    cout << "a / b               = " << a / b << endl;
    cout << "cast first          = " << static_cast<double>(a) / b << endl;
    cout << "int(3.9)            = " << static_cast<int>(3.9) << endl;
    return 0;
}

预期输出:

a / b               = 3
cast first          = 3.5
int(3.9)            = 3

解释:

  • 第 1 行两个 int 做整数除法得 3;
  • 第 2 行先把 a 变成 7.0(b 也自动变 2.0)得 3.5;
  • 第 3 行直接丢掉小数得 3,不是四舍五入成 4。
狀態
已結束
規則
IOI
題目
14
開始於
2026-10-28 18:15
結束於
2026-11-6 2:15
持續時間
200 小時
主持人
參賽人數
23