C++——数据类型与输入输出

一、基本数据类型(Primitive/Built-in Types)

1. 整型(Integer Types)

类型 关键字 大小(通常) 范围 用途
短整型 short 2字节 -32,768 ~ 32,767 节省内存
整型 int 4字节 -2³¹ ~ 2³¹-1 通用整数
长整型 long 4/8字节 至少与int相同 大整数
长长整型 long long 8字节 -2⁶³ ~ 2⁶³-1 超大整数
无符号整型 unsigned 同上 0 ~ 2ⁿ-1(n为位数) 非负整数

2. 浮点型(Floating-point Types)

类型 关键字 大小 精度 用途
单精度浮点 float 4字节 ~6-7位有效数字 通用浮点计算
双精度浮点 double 8字节 ~15位有效数字 高精度计算
长双精度浮点 long double 10字节 更高精度(依赖编译器) 特殊科学计算

3. 字符型(Character Types)

类型 关键字 大小 范围 用途
普通字符 char 1字节 -128~127或0~255 存储ASCII字符
宽字符 wchar_t 2/4字节 平台依赖 Unicode字符
C++11字符 char16_t 2字节 UTF-16 现代字符处理
char32_t 4字节 UTF-32 统一字符编码

4. 布尔型(Boolean Type)

  • 关键字bool
  • true / false
  • 大小:通常1字节(实际由编译器决定)。
  • 用途:逻辑控制(如if、循环条件)。

5. 空类型(Void Type)

  • 关键字void
  • 用途
    • 函数无返回值:void func() { ... }
    • 指针类型(void*):通用指针,需强制类型转换后使用。

二、标准I/O流概述

C++的标准输入输出系统是基于流(stream)的概念构建的,提供了类型安全、可扩展的I/O操作方式。与C语言的printf/scanf相比,C++的I/O系统通过运算符重载和面向对象的方式,提供了更灵活、更安全的输入输出机制。

1. 流类层次结构

C++的I/O系统由一系列相互关联的类组成,主要类层次如下:

ios_base → ios → istream → iostream → fstream/stringstream
                ↘ ostream ↗

2. 预定义标准流对象

C++预定义了四个标准流对象,都定义在std命名空间中:

对象 类型 对应C标准流 缓冲情况 典型用途
cin istream stdin 有缓冲 标准输入
cout ostream stdout 有缓冲 标准输出
cerr ostream stderr 无缓冲 错误输出(立即显示)
clog ostream stderr 有缓冲 日志输出

三、标准输出(cout)详解

1. 基本输出机制

插入运算符(<<)重载

函数原型

ostream& operator<<(ostream& os, [type]);

使用示例

int age = 25;
double salary = 4500.50;
cout << "Name: " << "John" 
     << ", Age: " << age 
     << ", Salary: " << salary 
     << endl;

代码解析

  1. 首先输出字符串"Name: "到标准输出

  2. 接着输出字符串"John"

  3. 然后输出", Age: "和整型变量age的值

  4. 再输出", Salary: "和浮点型变量salary的值

  5. 最后输出endl,它执行两个操作:插入换行符并刷新输出缓冲区

四、标准输入(cin)详解

1. 基本输入机制

提取运算符(>>)重载

函数原型

istream& operator>>(istream& is, [type]&);

使用示例

int age;
double salary;
cout << "Enter age and salary: ";
if (cin >> age >> salary) {
    cout << "Age: " << age << ", Salary: " << salary << endl;
} else {
    cerr << "Invalid input!" << endl;
    cin.clear(); // 清除错误状态
    cin.ignore(numeric_limits::max(), '\n'); // 清空缓冲区
}

代码解析

  1. 提示用户输入年龄和薪水

  2. 尝试读取一个整数和一个浮点数

  3. 检查读取是否成功(if条件中隐式调用了cin的bool转换运算符)

  4. 如果失败,清除错误状态并忽略当前行的剩余输入

你可能感兴趣的:(C++——数据类型与输入输出)