[C语言]数据类型关键字详解

发布于:2025-07-01 ⋅ 阅读:(23) ⋅ 点赞:(0)

基本数据类型

关键字 说明 存储大小(通常) 取值范围(通常) 示例
int 声明整型变量 4字节(32位系统) -2,147,483,648 到 2,147,483,647 int count = 100;
char 声明字符型变量 1字节 -128 到 127 或 0 到 255 char grade = ‘A’;
float 声明单精度浮点数 4字节 ±1.2e-38 到 ±3.4e38 (约6-7位有效数字) float pi = 3.14f;
double 声明双精度浮点数 8字节 ±2.3e-308 到 ±1.7e308 (约15-16位有效数字) double precise = 3.1415926535;
void 表示"无类型" void func();或void *ptr;
short 短整型 2字节 -32,768 到 32,767 short temp = -10;
long 长整型 4或8字节(取决于系统) -2,147,483,648 到 2,147,483,647(4字节时) long population = 7800000000L;
signed 有符号类型(默认) 同对应类型 同对应类型(包含负数) signed int balance = -1000;
unsigned 无符号类型 同对应类型 0 到对应类型最大值的两倍+1 unsigned int age = 25;

详细说明

int (整型)

  • 最常用的整数类型
  • 默认是有符号的(signed)
  • 大小通常为机器字长(32位系统4字节,64位系统通常也是4字节)
int counter = 0;
int temperature = -10;

char (字符型)

  • 存储单个字符
  • 实际上存储的是ASCII码值(整数)
  • 可以用作小范围整数(-128到127)
char letter = 'B';
char newline = '\n';

float (单精度浮点)

  • 存储小数
  • 后缀’f’或’F’表示float常量
  • 精度约6-7位十进制数字
float pi = 3.14159f;
float temperature = 98.6f;

double (双精度浮点)

  • 更高精度的浮点数
  • 默认浮点常量是double类型
  • 精度约15-16位十进制数字
double precise = 3.141592653589793;
double distance = 1.496e8;  // 科学计数法

void (无类型)

  • 三种主要用途:
    • 函数不返回值:void func() {…}
    • 函数无参数:int func(void) {…}
    • 通用指针:void *ptr; (可指向任何类型)
void sayHello() {
    printf("Hello\n");
}

short (短整型)

  • 比int小的整数类型
  • 通常用于节省空间
short daysInWeek = 7;

long (长整型)

  • 比int大的整数类型(具体大小取决于系统)
  • 后缀’l’或’L’表示long常量
long worldPopulation = 7800000000L;

signed/unsigned (有符号/无符号)

  • 控制整数是否包含负值
  • 默认是有符号的(signed)
  • unsigned类型范围是0到对应signed类型正范围的两倍+1
signed int balance = -1000;  // 可正可负
unsigned int age = 25;       // 只能非负

类型修饰符组合

组合 说明 示例
unsigned short 无符号短整型 unsigned short port = 80;
unsigned long 无符号长整型 unsigned long bigNum = 4000000000UL;
long double 扩展精度浮点 long double precise = 3.141592653589793238L;
signed char 有符号字符 signed char sc = -128;
unsigned char 无符号字符 unsigned char uc = 255;

注意事项

平台依赖性

  • 某些类型大小随平台变化(特别是long)
  • 可用的<stdint.h>获取固定大小类型(int32_t等)

隐式类型转换

  • 混合类型运算时会发生自动类型转换
  • 小类型会提升为大类型

溢出行为

  • 有符号整数溢出是未定义行为
  • 无符号整数溢出是取模行为

字面量后缀

  • U/u:unsigned (如10U)
  • L/l:long (如100000L)
  • F/f:float (如3.14f)
  • LL/ll:long long (如10000000000LL)

网站公告

今日签到

点亮在社区的每一天
去签到