编程语言
305
主要类型分类
类型 | 描述 |
---|---|
基本数据类型 | 它们是算术类型,包括整型(int)、字符型(char)、浮点型(float)和双精度浮点型(double)。 |
枚举类型: | 算术类型,被用来定义在程序中只能赋予其一定的离散整数值的变量。 |
void 类型: | 类型说明符 void 表示没有值的数据类型,通常用于函数返回值。 |
派生类型: | 包括数组类型、指针类型和结构体类型。 |
关于枚举类型和派生类型我们将在以后接触指针和结构体后再展开说明
1. 整数类型
ps: 以下存储大小默认以64位
机器为标准
类型 | 存储大小 | 值范围 |
---|---|---|
char | 1 字节 | -128 到 127 或 0 到 255 |
unsigned char | 1 字节 | 0 到 255 |
signed char | 1 字节 | -128 到 127 |
int | 2 或 4 字节 | -32,768 到 32,767 或 -2,147,483,648 到 2,147,483,647 |
unsigned int | 2 或 4 字节 | 0 到 65,535 或 0 到 4,294,967,295 |
short | 2 字节 | -32,768 到 32,767 |
unsigned short | 2 字节 | 0 到 65,535 |
long | 4 字节 | -2,147,483,648 到 2,147,483,647 |
unsigned long | 4 字节 | 0 到 4,294,967,295 |
32位
存储大小如下
关于类型的存储大小(长度) 可以使用 sizeof
关键字来计算
#include <stdio.h> int main() { printf("int size = : %lu \n", sizeof(int)); return 0; } //输出 4
%lu
为 32 位无符号整数,详细说明查看 cppreference手册
日常使用的有 |格式指示符| 描述 | |--|--| |%d | 十进制有符号整数 | | %u |十进制无符号整数 | | %f | 浮点数 | | %s | 字符串 | | %c | 单个字符 | | %p | 指针的值 | | %e | 指数形式的浮点数 | | %x, %X |无符号以十六进制表示的整数 | | %o | 无符号以八进制表示的整数 | | %g | 把输出的值按照 %e 或者 %f 类型中输出长度较小的方式输出 | | %p | 输出地址符 | | %lu | 32位无符号整数 | | %llu | 64位无符号整数 | | %% | 输出百分号字符本身。 | | %-10s | 左对齐并占用宽度为 10 的字符串 | | %5.2f | 右对齐并占用宽度为 5,保留两位小数的浮点数 | | %#x | 输出带有 0x 前缀的十六进制数 |
其余的一般不使用, 也没有必要全部记下来, 多看看平常使用的自然就贯彻了, 不常使用的再翻查即可
2. 浮点类型
类型 | 存储大小 | 值范围 | 精度 |
---|---|---|---|
float | 4 字节 | 1.2E-38 到 3.4E+38 | 6 位有效位 |
double | 8 字节 | 2.3E-308 到 1.7E+308 | 15 位有效位 |
long double | 16 字节 | 3.4E-4932 到 1.1E+4932 | 19 位有效位 |
#include <stdio.h> #include <float.h> int main() { printf("float max bytes : %lu \n", sizeof(float)); printf("float min: %E\n", FLT_MIN ); printf("float max: %E\n", FLT_MAX ); printf("Accuracy value: %d\n", FLT_DIG ); return 0; } //输出 float max bytes : 4 float min: 1.175494E-038 float max: 3.402823E+038 Accuracy value: 6
%E
是以指数形式输出单、双精度实数
3. void 类型
类型 | 描述 |
---|---|
函数返回为空 | C 中有各种函数都不返回值,或者您可以说它们返回空。不返回值的函数的返回类型为空。例如 void exit (int status); |
函数参数为空 | C 中有各种函数不接受任何参数。不带参数的函数可以接受一个 void。例如 int rand(void); |
指针指向 void | 类型为 void * 的指针代表对象的地址,而不是类型。例如,内存分配函数 *void malloc( size_t size ); 返回指向 void 的指针,可以转换为任何数据类型。 |