C语言-数据类型
C语言-数据类型

C语言-数据类型

一、C语言数据类型体系

C语言的数据类型可分为以下4大类:

基本类型
├── 整型 (int)
├── 浮点型 (float/double)
├── 字符型 (char)
└── void类型

构造类型
├── 数组
├── 结构体 (struct)
├── 共用体 (union)
└── 枚举 (enum)

指针类型
派生类型

二、详细知识点解析

1. 基本数据类型

(1) 整型

  • 类型:int
  • 修饰符:short(短整型)、long(长整型)、unsigned(无符号)
  • 存储大小:short int(2字节)、int(4字节)、long int(8字节)
  • 取值范围:int为-2147483648到2147483647

(2) 浮点型

  • float:单精度浮点(4字节,6位小数精度)
  • double:双精度浮点(8字节,15位小数精度)
  • long double:扩展精度(16字节,19位小数精度)

(3) 字符型

  • char:存储ASCII字符(1字节)
  • 本质是存储0-255的整数

(4) void类型

  • 表示”无类型”
  • 用于函数返回值(无返回值)和指针类型(void*)

2. 类型修饰符

  • signed:有符号(默认)
  • unsigned:无符号(仅表示正数)
  • short:缩短存储空间
  • long:扩展存储空间

三、记忆技巧

  1. ​分类记忆法​​:
  • 数值类型:整型、浮点型
  • 字符类型:char
  • 复合类型:数组、结构体
  1. ​大小口诀​​:”短整2,整型4,长整8,浮点4双8″
  2. ​格式化输出符号​​:
  • %d – int
  • %f – float
  • %lf – double
  • %c – char
  • %s – 字符串

四、代码示例

#include <stdio.h>

int main() {
    // 基本类型
    int age = 25;                     // 整型变量
    float price = 9.99f;              // 单精度浮点
    double pi = 3.1415926535;         // 双精度浮点
    char grade = 'A';                 // 字符型
    
    // 数组类型
    int scores[3] = {90, 85, 95};     // 整型数组
    
    // 结构体类型
    struct Student {
        char name[20];
        int id;
    };
    struct Student stu1 = {"Alice", 1001}; // 结构体变量
    
    // 指针类型
    int *p = &age;                    // 指向整型的指针
    
    // 类型转换
    int total = (int)(price * 100);   // 强制类型转换
    
    // 输出验证
    printf("年龄: %d\n", age);
    printf("价格: %.2f\n", price);
    printf("圆周率: %.4lf\n", pi);
    printf("成绩: %c\n", grade);
    printf("数组第一个元素: %d\n", scores[0]);
    printf("学生ID: %d\n", stu1.id);
    printf("指针指向的值: %d\n", *p);
    printf("转换后的总金额: %d\n", total);
    
    return 0;
}

五、代码逐行解释

  1. #include 引入标准输入输出库,使我们可以使用printf等函数
  2. int main() { … }程序入口函数,返回值为int类型
  3. int age = 25;声明并初始化一个整型变量,4字节存储空间
  4. float price = 9.99f;声明单精度浮点数,末尾的f表示float类型
  5. double pi = 3.1415926535;声明双精度浮点数,精度更高
  6. char grade = ‘A’;声明字符型变量,单引号表示字符
  7. int scores[3] = {90, 85, 95};声明包含3个元素的整型数组
  8. struct Student { … };定义结构体类型,包含字符数组和整型成员
  9. struct Student stu1 = {“Alice”, 1001};初始化结构体变量,字符串使用双引号
  10. int *p = &age;声明整型指针,&符号获取变量地址
  11. int total = (int)(price * 100);强制类型转换,将浮点数转换为整数
  12. printf(“年龄: %d\n”, age);格式化输出,%d对应整型
  13. printf(“价格: %.2f\n”, price);%.2f表示保留两位小数
  14. return 0;程序正常结束的返回值

六、常见问题

  1. ​类型溢出​​:当数值超过类型范围时会发生溢出
  2. ​精度损失​​:大数转小数时可能导致数据丢失
  3. ​内存占用​​:合理选择类型可以优化内存使用

七、总结建议

  1. 通过sizeof()运算符验证类型大小
  2. 不同类型间运算时注意隐式类型转换规则
  3. 开发中根据需求选择最合适的类型
  4. 多练习类型转换和格式化输出的配合使用

发表回复

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