2.8 c 语言中的数据类型
为了提供一个更全面的视角,下面是 C 语言中数据类型的一个详细列表,包括基本类型、派生类型以及它们的一些变种或特殊形式。
基本类型
- 整型
int
:整数short int
:短整数long int
:长整数unsigned int
:无符号整数unsigned short int
:无符号短整数unsigned long int
:无符号长整数signed char
:有符号字符unsigned char
:无符号字符
- 浮点型
float
:单精度浮点数double
:双精度浮点数long double
:扩展精度浮点数
- 字符型
char
:字符
枚举类型
enum
:枚举
派生类型
- 数组(
array
) - 结构体(
struct
) - 联合体(
union
) - 指针(
pointer
) - 函数:返回类型和参数类型可以是上述任何类型
特殊类型
- 空类型(
void
):用于指定没有值的情况,如无返回值的函数的返回类型或无类型指针(void*
)。
限定符
const
:指定变量的值不可修改volatile
:告诉编译器,变量的值可能以程序未明确指定的方式被改变register
:建议编译器尽可能地将变量存储在寄存器中static
:影响变量的存储期和链接性
类型修饰符
用于修改基本类型,使之适应特定的场合,如long
, short
, signed
, unsigned
等。
布尔类型
在 C99 标准中引入了_Bool
作为布尔类型。C 标准库还提供了<stdbool.h>
头文件,定义了bool
、true
、false
等符号,以便更方便地使用布尔类型。
这个表提供了一个更详细的概览,涵盖了 C 语言支持的各种数据类型及其修饰符。不同的数据类型和修饰符可以组合使用,以适应不同的编程需求和场景。
复数浮点型
复数浮点型在 C 语言中是通过库来支持的,而不是直接作为语言的基本数据类型。C99 标准引入了对复数的支持,通过在<complex.h>
头文件中定义了一系列宏和函数来处理复数。
使用复数类型,首先需要包含<complex.h>
头文件。在这个头文件中,复数类型被定义为:
float _Complex
double _Complex
long double _Complex
此外,C99 还引入了一个宏来创建复数值,即CMPLX
、CMPLXF
和CMPLXL
,分别用于double _Complex
、float _Complex
和long double _Complex
类型的复数。
创建和使用复数
例如,创建一个double _Complex
类型的复数可以这样做:
#include <complex.h>
double _Complex z = 1.0 + 2.0 * I;
这里I
是一个表示虚单位的宏。
对复数的操作,如加、减、乘、除以及获取其实部和虚部等,可以使用<complex.h>
中定义的一系列函数来完成:
creal()
和cimag()
分别用于获取复数的实部和虚部。cabs()
用于计算复数的绝对值(模)。carg()
用于计算复数的幅角(主值)。conj()
用于计算复数的共轭。
示例
计算两个复数之和,并打印结果的实部和虚部:
#include <stdio.h>
#include <complex.h>
int main() {
double _Complex z1 = 1.0 + 2.0 * I;
double _Complex z2 = 3.0 + 4.0 * I;
double _Complex sum = z1 + z2;
printf("Sum: %.1f + %.1fi\n", creal(sum), cimag(sum));
return 0;
}
这段代码首先创建了两个复数z1
和z2
,然后计算它们的和。creal(sum)
和cimag(sum)
分别用来获取结果复数的实部和虚部,最后将它们打印出来。
复数浮点型提供了一种强大的方式来在 C 语言中处理复数运算,对于需要进行复杂数学运算的程序来说非常有用。