基本数据类型

一、数据类型概述

数据是程序处理的对象,数据可以根据自身特点进行分类。

数学中有整数、实数等概念;日常生活中常用字符串表示人的姓名和地址;有些问题的回答只能是”是”或”否”,对应逻辑中的”真”和”假”。不同类型的数据有不同的处理方式:

  • 整数和实数可以进行算术运算,但实数的表示不同于整数,需要保留一定的小数位。
  • 字符串可以进行拼接操作。
  • 逻辑数据可以参与”与””或””非”等逻辑运算。

此外,C++还可以将客观世界的事物抽象为自定义类型。

基本数据类型是C++编译系统内置的数据类型,无需额外定义即可直接使用。

二、基本数据类型分类

C++内置的基本数据类型包括:

布尔型 bool

字符型 char

整型 int

浮点型 float(表示实数)

双精度型 double(双精度浮点型)

其中 char 本质上属于整数类型,它是长度为1个字节的整数,通常用来存放字符的ASCII码值。

三、类型修饰符

关键字 signed、unsigned、short、long 被称为修饰符,用于改变基本数据类型的范围和属性。

short 修饰 int 表示短整型,占2个字节,此时 int 可以省略不写。

long 可以修饰 double 和 int:

  • long 修饰 int 表示长整型,占4个字节。
  • long 修饰 double 表示长双精度型。

注意:不同的编译器对数据类型的长度定义可能不同。

四、有符号与无符号

无符号(unsigned)整数只能表示非负数(正数和0)。

有符号(signed)整数可以表示正数、负数和0。

五、浮点型的精度差异

两种浮点型除了取值范围不同外,精度也有所区别:

float 可以保存7位有效数字。例如数值 0.231454145 在 float 类型中只能保证前7位数字的精度。

double 可以保存15位有效数字,精度高于 float。

六、bool类型

bool 类型的取值范围只能是 false(假)或 true(真)。

以下代码示例展示基本数据类型的定义和使用方式:

#include <iostream>
using namespace std;

int main()
{
    // ===== bool类型 =====
    bool isPass = true;
    bool isOver = false;

    cout << "isPass = " << isPass << endl;   // 输出 1(true在C++中输出为1)
    cout << "isOver = " << isOver << endl;   // 输出 0(false在C++中输出为0)

    // ===== char类型 =====
    char grade = 'A';
    char newline = '\n';

    cout << "grade = " << grade << endl;

    // char本质是1字节整数,存放ASCII码
    char ch = 65;                // 65对应ASCII字符 'A'
    cout << "ch = " << ch << endl;

    // ===== 整型 =====
    int age = 20;
    short int score = 95;        // short修饰int,可省略int写为 short score = 95;
    long int population = 1400000000L;  // long修饰int

    cout << "age = " << age << endl;
    cout << "score = " << score << endl;
    cout << "population = " << population << endl;

    // ===== 有符号与无符号 =====
    signed int temperature = -10;     // 可以为负数
    unsigned int count = 100;        // 只能为非负数

    cout << "temperature = " << temperature << endl;
    cout << "count = " << count << endl;

    // ===== 浮点型 =====
    float pi_f = 3.1415926f;          // float,约7位有效数字
    double pi_d = 3.141592653589793;  // double,约15位有效数字

    cout << "pi_f = " << pi_f << endl;
    cout << "pi_d = " << pi_d << endl;

    // 精度对比示例
    float f1 = 0.231454145f;
    double d1 = 0.231454145;

    cout << "float  f1 = " << f1 << endl;   // 有效数字约7位,末尾可能不精确
    cout << "double d1 = " << d1 << endl;   // 有效数字约15位,精度更高

    // ===== 综合示例:不同类型参与运算 =====
    int a = 10;
    double b = 3.5;
    double result = a + b;    // int与double运算,int自动转换为double

    cout << "result = " << result << endl;

    bool compare = (a > b);  // 比较运算结果为bool类型
    cout << "a > b ? " << compare << endl;  // 输出 1(true)

    return 0;
}Code language: C++ (cpp)

七、各类型常见取值范围参考

以下为常见编译环境下的大致取值范围(不同平台可能略有差异):

数据类型典型字节数取值范围
bool1false 或 true
char1-128 ~ 127(signed)或 0 ~ 255(unsigned)
short int2-32768 ~ 32767
int4-2147483648 ~ 2147483647
long int4-2147483648 ~ 2147483647
unsigned int40 ~ 4294967295
float4约 ±3.4e±38,7位有效数字
double8约 ±1.7e±308,15位有效数字

八、小结

  • 基本数据类型是C++程序中最基础的数据分类,包含布尔型、字符型、整型、浮点型和双精度型。
  • 修饰符 short、long、signed、unsigned 可以改变数据类型的存储大小和表示范围。
  • char 本质上是1字节整数,用于存储字符的ASCII码。
  • float 和 double 的区别在于取值范围和有效数字精度。
  • bool 类型只有 true 和 false 两个取值。
  • 不同编译器对数据类型的长度定义可能不同,实际开发中应注意可移植性问题。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注