C 语言编程 — 基本数据类型
目录
前文列表
《程序编译流程与 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
浮点型
下表列出了关于标准浮点类型的存储大小、值范围和精度的细节:

- 单精度常量: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 语言编程 — 基本数据类型的更多相关文章
- R语言编程艺术# 数据类型向量(vector)
R语言最基本的数据类型-向量(vector) 1.插入向量元素,同一向量中的所有的元素必须是相同的模式(数据类型),如整型.数值型(浮点数).字符型(字符串).逻辑型.复数型等.查看变量的类型可以用t ...
- C语言编程入门之--第四章C语言基本数据类型
导读:C语言程序中经常涉及一些数学计算,所以要熟悉其基本的数据类型.数据类型学习起来比较枯燥,不过结合之前的内存概念,以及本节的字节概念,相信数据类型也就不难理解了.本章从二进制的基本概念开始,然 ...
- Go 语言的基本数据类型
Go 语言的基本数据类型 0)变量声明 var 变量名字 类型 = 表达式 例: 其中“类型”或“= 表达式”两个部分可以省略其中的一个. 1)根据初始化表达式来推导类型信息 2)默认值初始化为0. ...
- 第二章 C语言编程实践
上章回顾 宏定义特点和注意细节 条件编译特点和主要用处 文件包含的路径查询规则 C语言扩展宏定义的用法 第二章 第二章 C语言编程实践 C语言编程实践 预习检查 异或的运算符是什么 宏定义最主要的特点 ...
- 华为C语言编程规范
DKBA华为技术有限公司内部技术规范DKBA 2826-2011.5C语言编程规范2011年5月9日发布 2011年5月9日实施华为技术有限公司Huawei Technologies Co., Ltd ...
- linux 操作系统下c语言编程入门
2)Linux程序设计入门--进程介绍 3)Linux程序设计入门--文件操作 4)Linux程序设计入门--时间概念 5)Linux程序设计入门--信号处理 6)Linux程序设计入门--消息管理 ...
- 采访:Go语言编程
Go语言是由Google在2009年11月份公布的,它的目标是要应对软件开发所面临的最新挑战.Go语言特别被设计为快速(包括在编译时).支持多核的语言,并且兼顾了动态语言的简单性和静态类型语言的安全性 ...
- MySQL的C语言编程(一)
原文:MySQL的C语言编程(一) 初学MySQL,记录一下MySQL用c语言编程时遇到的问题. 这是我的源程序: int main(void) { MYSQL *mysql=NULL; if((my ...
- R语言编程艺术(2)R中的数据结构
本文对应<R语言编程艺术>第2章:向量:第3章:矩阵和数组:第4章:列表:第5章:数据框:第6章:因子和表 ======================================== ...
- Go 语言编程
[课程名称]Go 语言编程 [课程时间]2014年7月30日(周三) 20:50 - 22:00 [课程安排]20:50-21:00 通过邮件地址登录网络课堂 ...
随机推荐
- #离线,倒序,线段树#Comet OJ - Contest #15 E 栈的数据结构题
题目 初始时有 \(N\) 个空的栈,编号为 \(1 \sim N\),有以下三种类型的指令: push \(L\) \(R\) \(v\):把编号 \(L \sim R\) 这连续 \(R-L+1\ ...
- MySQL 主从 AUTO_INCREMENT 不一致问题分析
作者:vivo 互联网数据库团队 - Wei Haodong 本文介绍了 MySQL5.7 中常见的replace into 操作造成的主从auto_increment不一致现象,一旦触发了主从切换, ...
- CentOS 防火墙配置实战精要
防火墙是服务器最重要的安全屏障,正确的操作对应用也是非常非常关键,本文参考了一些实战经验并经过实验验证,集众家之长做了简单的归纳整理,希望能帮助你更好地操作防火墙. 设置CentOS防火墙开放端口 在 ...
- warmup预热学习率
学习率是神经网络训练中最重要的超参数之一,针对学习率的优化方式很多,Warmup是其中的一种 (一).什么是Warmup?Warmup是在ResNet论文中提到的一种学习率预热的方法,它在训练开始的时 ...
- 中国大陆地区维护的Linux操作系统
Linux开源生态丰富,中国大陆地区基于CentOS停服,依托阿里云.腾讯云.华为云三大私营企业,相继发布了自己的开源Linux定制版,很高兴的是他们只是改个名字并没有选择闭门造车,只是官网还是很不耻 ...
- 宏杉科技加入阿里云PolarDB开源数据库社区
简介: 宏杉科技签署阿里巴巴开源CLA(Contribution License Agreement, 贡献许可协议), 正式与阿里云PolarDB 开源数据库社区牵手. 宏杉科技签署阿里巴巴开源CL ...
- 全面升级!揭秘阿里云智能Logo设计的AI黑科技
简介: 免费体验!阿里云智能logo设计一直致力于用AI技术,帮助更多有设计需求的朋友能"多快好省"地做logo,让"设计logo"这件有门槛的事情,通过智能工 ...
- 做ToB软件质量保障的这两年
简介:自己算是阿里的老兵了,从实习开始一直投身在 toB 业务的质量保障领域内,不能说是资深的专家,但所经历的.感受的业务特点和体会还是具有一定的代表性,希望能通过这篇文章,总结一下过往,并能和已经 ...
- dubbogo 3.0:牵手 gRPC 走向云原生时代
作者 | 李志信 于雨来源|阿里巴巴云原生公众号 自从 2011 年 Dubbo 开源之后,被大量中小公司采用,一直是国内最受欢迎的 RPC 框架.2014 年,由于阿里内部组织架构调整,Dubbo ...
- [GPT] 监测输入框被 js 设置了值 ?input 输入框被设置了 value 值,但是没有触发 change 事件?
1. input 输入框被设置了 value 值,但是没有触发 change 事件 ? 如果输入框的 value 值是通过 JavaScript 代码直接设置的,那么不会触发 change 事件,这是 ...