跳到主要内容

C 语言数据类型

提示
  1. 基本数据类型:C语言中的基本数据类型包括整数(int)、字符(char)、浮点数(float)、双精度浮点数(double)等,每种类型有固定的大小和格式说明符。
  2. 扩展的数据类型:使用shortlong修饰符可以定义更大或更小范围的整数,而signedunsigned修饰符用于定义正负数或仅正数的整数类型。
  3. 派生数据类型:由基本数据类型派生的类型包括数组、指针、函数类型、结构体等,这些在后续教程中将详细介绍。

在C编程中,数据类型是变量的声明。这决定了与变量相关联的数据的类型和大小。例如,

int myVar;

这里,myVar是int(整数)类型的变量。int的大小是4字节。

基本类型

下表包含C编程中常用的类型,以便快速访问。

类型大小(字节)格式说明符
int至少2,通常4%d, %i
char1%c
float4%f
double8%lf
short int通常2%hd
unsigned int至少2,通常4%u
long int至少4,通常8%ld, %li
long long int至少8%lld, %lli
unsigned long int至少4%lu
unsigned long long int至少8%llu
signed char1%c
unsigned char1%c
long double至少10,通常12或16%Lf

int

整数是可以具有零、正数和负数值,但没有小数值的整数。例如,0-510

我们可以使用int声明一个整数变量。

int id;

这里,id是一个整数类型的变量。

您可以在C编程中一次声明多个变量。例如,

int id, age;

int的大小通常是4字节(32位)。它可以从-21474836482147483647232个不同状态。

float和double

floatdouble用于存储实数。

float salary;
double price;

在C中,浮点数也可以用指数形式表示。例如,

float normalizationFactor = 22.442e2;

floatdouble之间有什么区别?

float(单精度浮点数据类型)的大小是4字节。而double(双精度浮点数据类型)的大小是8字节。

char

关键字char用于声明字符类型变量。例如,

char test = 'h';

字符变量的大小是1字节。

void

void是不完整的类型。它意味着“没有”或“无类型”。您可以将void视为不存在

例如,如果一个函数没有返回任何东西,其返回类型应该是void

注意,您不能创建void类型的变量。

short和long

如果您需要使用大数字,可以使用类型说明符long。这是方法:

long a;
long long b;
long double c;

这里,变量a和b可以存储整数值。而c可以存储浮点数。

如果您确定只会使用小整数([−32,767, +32,767]范围),可以使用short

short d;

您可以使用sizeof()运算符随时检查变量的大小。

#include <stdio.h>
int main() {
short a;
long b;
long long c;
long double d;

printf("short的大小 = %d 字节\n", sizeof(a));
printf("long的大小 = %d 字节\n", sizeof(b));
printf("long long的大小 = %d 字节\n", sizeof(c));
printf("long double的大小= %d 字节\n", sizeof(d));
return 0;
}

有符号和无符号

在C语言中,signed(有符号)和unsigned(无符号)是类型修饰符。你可以使用它们来改变数据类型的数据存储:

  • signed(有符号)- 允许存储正数和负数
  • unsigned(无符号)- 只允许存储正数

例如,

// 有效代码
unsigned int x = 35;
int y = -35; // signed int(有符号整型)
int z = 36; // signed int(有符号整型)

// 无效代码:unsigned int(无符号整型)不能存储负整数
unsigned int num = -35;

在这里,变量x和num只能存储零和正值,因为我们使用了unsigned(无符号)修饰符。

考虑到int的大小为4字节,变量y可以存储从-2^312^31-1的值,而变量x可以存储从02^32-1的值。

派生数据类型

从基本数据类型派生出来的数据类型是派生类型。例如:数组、指针、函数类型、结构体等。

我们将在后续教程中学习这些派生数据类型。

  • 布尔类型
  • 枚举类型
  • 复合类型