目录

文章目录

  • 目录
  • 前文列表
  • 数据类型
  • 基本数据类型
    • 整型
    • 浮点型

前文列表

《程序编译流程与 GCC 编译器》
《C 语言编程 — 基本语法》

数据类型

数据类型,即数据对象的类型,是编程语言的基石。自编程语言发明以来,数据类型就已经存在,其最初的目的就是为了能够让程序更加充分的利用稀缺的内存空间。

在硬件行业严格遵守摩尔定律发展了多年后的今天,开发者得以享受充足内存资源,同时,数据类型也被赋予了更深厚的含义:

  • 确定数据对象占用的内存空间大小
  • 确定数据对象的数值范围
  • 规定数据对象所能进行的操作(行为)

例如:基本整型数据对象占用 4 Bytes(32 Bits) 的内存空间, 数值范围是 0x0~0xFFFF FFFF,可以进行求余运算。需要注意的是,类型数据对象所占用的内存空间和数值范围,除了取决于 C 语言本身的常规定义之外,还可能会受到编译器的影响。

C 语言的数据类型可能是内建的,也可能是我们自定义的。

C 语言 4 大数据类型:

基本数据类型

数据类型用于声明不同类型的常量、变量或函数。变量的数据类型决定了变量占用的存储空间,以及如何解释存储的位模式。

基本类型是算术类型,包括:整数类型和浮点类型。

无符号数据类型与有符号数据类型的区别:

  • 占用相同的内存空间,但表示数值范围不同
  • 有符号和无符号仅可用于修饰整型或字符型数据对象

例如:若 unsigned char 和 signed char 都占用 1Byte 的内存空间。signed char 的数值范围为 [-128, 127],而 unsigned char 的数据范围为 [0, 255]。这是因为有符号数据类型数据的最高位被用作为符号位,而无符号的数据类型数据最高位被用作为数据位。

整型

  • 默认为 10 进制
  • 以 0 开头为 8 进制:045,021
  • 以 0b 开头为 2 进制:0b11101101
  • 以 0x 开头为 16 进制:0x21458adf

注意,各种类型的存储大小与操作系统 CPU 的位数是有关系的。可以使用 sizeof 运算符来得到某个类型或某个变量在特定平台上的准确大小。

#include <stdio.h>int main() {printf("int: %lu \n", sizeof(int));return 0;
}
  • stdio.h:输入输出标准库,声明了 printf 标准函数
  • %lu:为 32 位无符号整数。
  • sizeof:C 语言运算符,计算数据类型或变量长度(即:所占字节数)

运行:

$ gcc -Wall main.c -o main$ ./main
int: 4

在 Linux 操作系统中,int 类型变量占用 4 Byte,数值范围 [-2147483648, 2147483647],unsigned int 的数值范围为 [0, 4294967295],约为 42 亿。在大多情况下 int 类型都是可以满足需要的,但在特殊场景下,就需要使用到 long long int 类型了,占用 8 Byte 空间,取值范围为 [-9223372036854775808, 9223372036854775807]。unsigned long long int 的取值范围为 [0, 18446744073709551615],数值范围大得惊人。

// unsigned long long
printf("num = %llu\n", num);
// long long int
printf("num = %lld\n", num);

浮点型

下表列出了关于标准浮点类型的存储大小、值范围和精度的细节:

  • 单精度常量:2.3f
  • (默认)双精度常量:2.3
#include <stdio.h>
#include <float.h>int main(){printf("float byte: %lu \n", sizeof(float));printf("float MIN: %E \n", FLT_MIN);printf("float MAX: %E \n", FLT_MAX);printf("float DIG: %d \n", FLT_DIG);return 0;
}
  • float.h:定义了浮点数相关的宏,e.g. FLT_MIN、FLT_MAX 等。
  • %E:以指数形式输出单、双精度实数。

运行:

$ ./main
float byte: 4
float MIN: 1.175494E-38
float MAX: 3.402823E+38
float DIG: 6

C 语言编程 — 基本数据类型相关推荐

  1. C 语言编程 — 高级数据类型 — void 类型

    目录 文章目录 目录 前文列表 void 类型 前文列表 <程序编译流程与 GCC 编译器> <C 语言编程 - 基本语法> <C 语言编程 - 基本数据类型> & ...

  2. C 语言编程 — 高级数据类型 — 字符串

    目录 文章目录 目录 前文列表 字符串 字符串拷贝 字符串比较 strcmp strncmp 前文列表 <程序编译流程与 GCC 编译器> <C 语言编程 - 基本语法> &l ...

  3. C 语言编程 — 高级数据类型 — 共用体

    目录 文章目录 目录 前文列表 共用体 定义共用体 访问共用体成员 前文列表 <程序编译流程与 GCC 编译器> <C 语言编程 - 基本语法> <C 语言编程 - 基本 ...

  4. C 语言编程 — 高级数据类型 — 结构体与位域

    目录 文章目录 目录 前文列表 结构体 定义结构体 初始化结构体变量 访问结构体成员 结构体的内存分布 将结构体作为实参传入函数 指向结构体变量的指针 位域 定义位域 使用位域结构体的成员 前文列表 ...

  5. C 语言编程 — 高级数据类型 — 枚举

    目录 文章目录 目录 前文列表 声明枚举类型 定义枚举类型的变量 枚举类型变量的枚举值 枚举在 switch 语句中的使用 将整型转换为枚举类型 前文列表 <程序编译流程与 GCC 编译器> ...

  6. C 语言编程 — 高级数据类型 — 数组

    目录 文章目录 目录 前文列表 数组 声明数组 初始化数据 访问数组元素 二维数组 指向数组的指针 将数组指针作为实参传入函数 从函数返回一个数组指针 指针数组 数组名和取数组首地址的区别 前文列表 ...

  7. C 语言编程 — 高级数据类型 — 指针

    目录 文章目录 目录 前文列表 指针 声明一个指针变量 使用指针 空指针 悬空指针 野指针 指针的算术运算 指向指针的指针 将指针作为实际参数传入函数 从函数返回指针 一个古老的笑话 前文列表 < ...

  8. Go 语言编程 — 高级数据类型 — 结构体

    目录 文章目录 目录 结构体 访问结构体成员 向函数传递结构体 结构体指针 结构体标签(Struct Tag) 结构体 Golang 中,结构体是由一系列具有相同类型或不同类型的数据构成的数据集合.与 ...

  9. Go 语言编程 — 高级数据类型 — Interface、多态、Duck Typing 与泛式编程

    目录 文章目录 目录 Golang 的接口 Interface 实例存储的是实现者的值 如何判断某个 Interface 实例的实际类型 Empty Interface Interface 与多态 I ...

最新文章

  1. dhtmlxgrid表格笔记
  2. 【c语言】输入两个数,交换这两个数后,再输出
  3. 64位centos 下编译 hadoop 2.6.0 源码
  4. Ubuntu18常用指令集合(更新中)
  5. oracle 声明二维数组,[zt]C++二维数组讲解、二维数组的声明和初始化
  6. python定义一个矩形类_创建矩形类
  7. java usc2短信编码_手机短信PDU编码与解码
  8. fastjson 不转某些字段_全面总结Fastjson过滤字段、排除字段的5种方法(含示例)...
  9. 华为音量键只能调通话_华为手机音量键的隐藏功能,知道一个就会好用不少!...
  10. php3d建模,3d建模师容易找工作吗
  11. Flutter ListView ListView.build ListView.separated
  12. qq安全保护进程更改计算机,QQ安全中心
  13. CNN结构演变总结(二)轻量化模型
  14. java如何解压rar文件怎么打开,Java压缩与解压rar文件
  15. 他用一生换一个资本帝国
  16. 描写火车站场景_描写车站的优美句子
  17. 音频单通道转双通道算法
  18. 中诚信报告预计2019年中国GDP增长率约6.3%
  19. PyQt5 - QSS
  20. “超融合对战法”,带你杀出一条血路

热门文章

  1. iOS友盟推送发送失败
  2. html 控件坐标定位,利用JS改变html控件位置
  3. 基于matlab的64QAM,通信调制体制设计之64QAM性能分析MATLAB仿真及代码
  4. 解决ubuntu中遇到“E:Unable to locate package rar” 的问题
  5. ERPLAB中文教程:ERPLAB安装与添加通道
  6. 别忽视新冠轻症,它会损害你的记忆力
  7. 针孔摄像头屡禁不止?用你手机自带的ToF传感器对付它,检测成功率近90%
  8. 手指贴个“创可贴”,你睡觉都能发电
  9. 他的车队低调拿掉安全员,现在用10亿新融资惊艳了所有人
  10. 谷歌自动重建了完整果蝇大脑神经图:40万亿像素,可在线交互,用了数千块TPU...