C语言数据类型概述
C语言的数据类型定义了变量可以存储的数据种类及其大小。分为基本数据类型、派生数据类型和用户自定义类型。基本数据类型包括整型、浮点型、字符型和空类型,这些是构建复杂数据结构的基石。
整型数据类型
整型用于存储整数,分为有符号和无符号类型。不同整型占用的内存空间和取值范围不同,常见的有char
、short
、int
、long
和long long
。
#include <stdio.h>
#include <limits.h>
int main() {
printf("char: %d bytes, %d to %d\n", sizeof(char), CHAR_MIN, CHAR_MAX);
printf("unsigned char: %d bytes, 0 to %d\n", sizeof(unsigned char), UCHAR_MAX);
printf("int: %d bytes, %d to %d\n", sizeof(int), INT_MIN, INT_MAX);
printf("long: %d bytes, %ld to %ld\n", sizeof(long), LONG_MIN, LONG_MAX);
return 0;
}
浮点型数据类型
浮点型用于存储小数,包括float
、double
和long double
。float
通常为4字节,double
为8字节,精度和范围依次增加。
#include <stdio.h>
#include <float.h>
int main() {
float f = 3.1415926535f;
double d = 3.1415926535;
printf("float: %d bytes, precision: %d digits\n", sizeof(float), FLT_DIG);
printf("double: %d bytes, precision: %d digits\n", sizeof(double), DBL_DIG);
printf("float value: %.10f\n", f); // 精度损失
printf("double value: %.10lf\n", d);
return 0;
}
字符型数据类型
字符型char
用于存储单个字符,本质是1字节整型。字符常量用单引号包裹,如'A'
,实际存储的是ASCII码值。
#include <stdio.h>
int main() {
char c = 'A';
printf("char: %c, ASCII: %d\n", c, c);
printf("char + 1: %c\n", c + 1); // 输出 'B'
return 0;
}
类型修饰符
signed
、unsigned
、short
和long
可修饰整型,改变其取值范围。signed
表示有符号数(默认),unsigned
表示无符号数。
#include <stdio.h>
int main() {
unsigned int ui = 4294967295; // unsigned int最大值
printf("unsigned int max: %u\n", ui);
short int si = 32767; // short最大值
printf("short int max: %hd\n", si);
return 0;
}
类型转换
C语言支持隐式和显式类型转换。隐式转换由编译器自动完成,显式转换需使用强制类型转换运算符。
#include <stdio.h>
int main() {
int i = 5;
float f = 2.5;
printf("int + float: %f\n", i + f); // 隐式转换为float
printf("强制转换: %d\n", (int)f); // 显式转换为int
return 0;
}
枚举类型
枚举类型enum
用于定义一组命名的整型常量,提高代码可读性。
#include <stdio.h>
enum Weekday {MON=1, TUE, WED, THU, FRI, SAT, SUN};
int main() {
enum Weekday day = WED;
printf("Weekday: %d\n", day); // 输出 3
return 0;
}
派生数据类型
派生类型包括数组、指针、结构体和联合体。这些类型通过组合基本类型实现更复杂的数据结构。
#include <stdio.h>
struct Point {
int x;
int y;
};
int main() {
struct Point p = {10, 20};
printf("Point: (%d, %d)\n", p.x, p.y);
return 0;
}
空类型
void
类型表示无类型,主要用于函数返回值、指针和空参数列表。
#include <stdio.h>
void print_hello() {
printf("Hello, World!\n");
}
int main() {
print_hello();
return 0;
}