当前位置:嗨网首页>书籍在线阅读

20-总结_基本数据类型

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

B.3.1 总结:基本数据类型

C语言的基本数据类型分为两大类:整数类型和浮点数类型。不同的种类提供了不同的范围和精度。

1.关键字

创建基本数据类型要用到8个关键字: intlongshortunsignedcharfloatdoublesigned (ANSI C)。

2.有符号整数

有符号整数可以具有正值或负值。

int 是所有系统中基本整数类型。

longlong int 可存储的整数应大于或等于 int 可存储的最大数; long 至少是 32 位。

shortshort int 整数应小于或等于 int 可存储的最大数; short 至少是 16 位。通常, longshort 大。例如,在 PC 中的 C DOS 编译器提供 16 位的 shortint32 位的 long 。这完全取决于系统。

C99 标准提供了 long long 类型,至少和 long 一样大,至少是 64 位。

3.无符号整数

无符号整数只有 0 和正值,这使得该类型能表示的正数范围更大。在所需的类型前面加上关键字 unsignedunsigned intunsigned longunsigned shortunsigned long long 。单独的 unsigned 相当于 unsigned int

4.字符

字符是如 A&+ 这样的印刷符号。根据定义, char 类型的变量占用1字节的内存。过去, char 类型的大小通常是8位。然而,C在处理更大的字符集时, char 类型可以是16位,或者甚至是32位。

这种类型的关键字是 char 。一些实现使用有符号的 char ,但是其他实现使用无符号的 charANSI C 允许使用关键字 signedunsigned 指定所需类型。从技术层面上看, charunsigned charsigned char 是3种不同的类型,但是 char 类型与其他两种类型的表示方法相同。

5.布尔类型(C99)

_Bool 是C99新增的布尔类型。它一个无符号整数类型,只能存储 0 (表示假)或 1 (表示真)。包含 stdbool.c 头文件后,可以用 bool 表示 _Boolture 表示 1false 表示 0 ,让代码与 C++ 兼容。

6.实浮点数和复浮点数类型

C99识别两种浮点数类型:实浮点数和复浮点数。浮点类型由这两种类型构成。

实浮点数可以是正值或负值。C识别3种实浮点类型。

float 是系统中的基本浮点类型。它至少可以精确表示6位有效数字,通常 float 为32位。

double (可能)表示更大的浮点数。它能表示比 float 更多的有效数字和更大的指数。它至少能精确表示10位有效数字。通常, double 为64位。

long double (可能)表示更大的浮点数。它能表示比 double 更多的有效数字和更大的指数。

复数由两部分组成:实部和虚部。C99规定一个复数在内部用一个有两个元素的数组表示,第1个元素表示实部,第2个元素表示虚部。有3种复浮点数类型。

float _Complex 表示实部和虚部都是 float 类型的值。

double _Complex 表示实部虚部都是 double 类型的值。

long double _Complex 表示实部和虚部都是 long double 类型的值。

每种情况,前缀部分的类型都称为相应的实数类型(corresponding real type)。例如, doubledouble _Complex 相应的实数类型。

C99中,复数类型在独立环境中是可选的,这样的环境中不需要操作系统也可运行C程序。在C11中,复数类型在独立环境和主机环境都是可选的。

有3种虚数类型。它们在独立环境中和主机环境中(C程序在一种操作系统下运行的环境)都是可选的。虚数只有虚部。这3种类型如下。

float _Imaginary 表示虚部是 float 类型的值。

double _Imaginary 表示虚部是 double 类型的值。

long double _Imaginary 表示虚部是 long double 类型的值。

可以用实数和 I 值来初始化复数。 I 定义在 complex.h 头文件中,表示 i (即 -1 的平方根)。

#include <complex.h>                // I定义在该头文件中
double _Complex z = 3.0;            // 实部 = 3.0,虚部 = 0
double _Complex w = 4.0 * I;        // 实部 = 0.0,虚部 = 4.0
double Complex u = 6.0 – 8.0 * I;   //实部= 6.0,虚部 = -8.0

前面章节讨论过, complex.h 库包含一些返回复数实部和虚部的函数。