C语言的数据类型(整形int、字符型char、浮点型float、double)
创作时间:
作者:
@小白创作中心
C语言的数据类型(整形int、字符型char、浮点型float、double)
引用
CSDN
1.
https://m.blog.csdn.net/Siri_s12/article/details/143997006
本文将详细介绍C语言中的各种数据类型,包括整形、字符型、浮点型和布尔型等。文章内容详尽,涵盖了数据存储的基本单位、signed和unsigned的区别、各种数据类型的取值范围以及sizeof操作符的使用等。
一、计算机数据存储和处理的基本单位
- 位(bit):计算机中最小的数据单位,只能表示0或1
- 字节(Byte):由8位组成,是计算机处理数据的基本单位
- 千字节(KB, Kilobyte):1KB等于1024字节,因为计算机使用二进制,所以1024(2^10)是1KB
- 兆字节(MB, Megabyte):1MB等于1024KB,也就是1024 * 1024字节
- 吉字节(GB, Gigabyte):1GB等于1024MB ,也就是1024 * 1024 * 1024字节
- 太字节(TB, Terabyte):1TB等于1024GB,也就是1024 * 1024 * 1024* 1024字节
- 拍字节(PB, Petabyte):1PB等于1024TB
- 在编程中,字节是定义数据类型和内存分配的基础
二、signed 和 unsigned
- C 语⾔引⼊
signed
和unsigned
关键字来修饰char
、short
、int
、long
等整型家族的类型。 - 使⽤
signed
关键字,表⽰⼀个类型 带有正负号 ,包含负值 - 使⽤
unsigned
关键字,表⽰该类型 不带有正负号 ,只能表⽰零和正整数
三、 数据类型介绍
- “类型”指的是相似数据所拥有的共同特征,编译器只有知道了数据的类型,才知道怎么操作数据。
- “整数类型”用来描述整数,比如
1
、2
、3
- “字符类型”用来描述字符,比如
'a'
、'b'
、'c'
、"asdfg"
- “浮点型类型”用来描述小数,比如
1.1
、3.14
1.字符型
(1)char类型
char = character
意思是 字符char
类型通常用于存储 单个字符 ,例如 字母、数字、符号char
类型通常占用 1个字节(8位) ,这个大小是由编译器和机器架构决定。- ASCII 编码中,
char
可以表示数值范围是从 0 到 127(在8位系统中)
(2) signed char 和 unsigned char
signed char
可以表示的数值范围是从 -128 到 127(在8位系统中)char = signed char
,在C语言,如果不特别指定,char
默认是有符号的。这意味着如果你只是声明char
而没有指定signed
或unsigned
,它将被当作signed char
unsigned char
可以表示的数值范围是从 0 到 255(在8位系统中)。
2.整型
(1)整形类型的主要区别
- 有符号(signed) 可以表示正数和负数
- 无符号(unsigned) 只能表示非负数,因此数值范围的上限是 相应有符号类型的两倍
int = signed int
,int 类型,默认是带有正负号的,也就是说 int 等同于 signed int ,短整型、整形、长整形、更⻓的整型 也是如此- 大小 (具体范围不需要背蛤,了解一下就好):
short int
通常为16位int
通常为32位long int
可能是32位或64位long long int
通常为64位
具体的数值范围和位数可能会因为不同的编译器和系统架构而有所不同。
(2)整型
- 三种:
int
、signed int
、unsigned int
int = signed int
有符号的整型,是 最常用的 整数类型,通常为32位,数值范围取决于具体的编译器和系统架构,但通常是 -2147483648到2147483647unsigned int
无符号的整型,数值范围为 0到4294967295
(3)短整型
- 三种:
short int
、signed short int
、unsigned short int
short int = signed short int
有符号的短整型,可以存储的数值范围较小,通常为 -32768到32767(16位)unsigned short int
无符号的短整型,只能存储 非负数 ,数值范围通常为 0到65535(16位)
(4)长整形
- 三种:
long int
、signed long int
、unsigned long int
long int = signed long in
和unsigned long int
的取值范围确实取决于具体的编译器和系统架构- 有符号的长整型(signed long int):
- 在32位系统中,
long int = signed long in
通常是32位的,数值范围通常为 -2147483648到2147483647 - 在64位系统中,
long int = signed long in
可能是64位的,数值范围通常为 -9223372036854775808到9223372036854775807 - 无符号的长整型(unsigned long int):
- 在32位系统中,
unsigned long int
通常是32位的,数值范围通常 0到4294967295 - 在64位系统中,
unsigned long int
可能是64位的,数值范围通常 0到 18446744073709551615
(5)更长整形
- 三种(C99中引⼊):
long long int
、signed long long int
、unsigned long long int
long long int = [signed] long long int
有符号的更长整型,通常为64位,数值范围为 -9223372036854775808到9223372036854775807unsigned long long int
无符号的更长整型,数值范围为 0到18446744073709551615。
3.浮点型
float
单精度浮点型double
双精度浮点型long double
精度更长的浮点型
4.布尔类型
(1)在C语言中
- 0表示假
- 非0表示真
(2)_Bool
- 在 C99 中也引⼊了 布尔类型 ,是专⻔表⽰真假的
_Bool
- 布尔类型的使⽤得包含头⽂件
<stdbool.h>
- 布尔类型变量的取值是:
true
或者false
(3)_Bool 的其他写法
_Bool
写成bool
这样也没问题#define bool _Bool
#define false 0
#define true 1
四、各种数据类型的取值范围
1. sizeof 操作符
sizeof
是 C 语⾔提供的⼀个 运算符(操作符) ,也是⼀个 关键字
(1) sizeof 的使用形式
sizeof
返回某种数据类型或某个值占⽤的字节数量,它的参数可以是 数据类型 的关键字,也可以是 变量名 或 某个具体的值sizeof
不仅仅可以计算内置的类型的⼤⼩,计算 数组 、 ⾃定义类型 的⼤⼩都是可以的- 语法:
sizeof(type)
- 整型类型的变量是4个字节,直接使⽤整型类型也是4个字节
sizeof
的括号中如果给的不是类型的话,括号可以省略的
(2) 计算各数据类型的长度
- C语言标准:
sizeof(long)
>=sizeof(int)
sizeof(long double)
>=sizeof(double)
(其他的同理)
(3) sizeof 中的表达式不计算
sizeof
在代码进行编译的时候,就 根据表达式的类型确定 了,而表达式的执行要在程序运行期间执行,在编译期间已经将sizeof处理掉了,所以在运行期间就不会执行表达式了
(4) sizeof 的返回类型(这里涉及占位符知识,博主下个帖子会说到)
sizeof
运算符的返回值,C 语⾔只规定是⽆符号整数,并没有规定具体的类型,不同的系统中,返回值的类型有可能是unsigned int
,也有可能是unsigned long
,甚⾄是unsigned long long
,对应的printf()
占位符分别是%u
、%lu
和%llu
。这样不利于程序的可移植性。- C 语⾔提供了⼀个解决⽅法,创造了⼀个类型别名
size_t
,⽤来统⼀表⽰ sizeof 的 返回值类型 。该别名定义在stddef.h
头⽂件(引⼊stdio.h
时会⾃动引⼊)⾥⾯,对应当前系统的 sizeof 的返回值类型,可能是unsigned int
,也可能是unsigned long
。 - 注:VS2022中
size_t
是定义在vcruntime.h
中的,不同的编译器实现上略有差异的。 - C 语⾔还提供了⼀个常量
SIZE_MAX
,表⽰size_t
可以表⽰的最⼤整数。所以,size_t
能够表⽰的整数范围为[0, SIZE_MAX]
。 printf()
有专⻔的占位符%zd
或%zu
,⽤来处理size_t
类型的值。
#include <stdio.h>
int main()
{
printf("%zd\n", sizeof(int));
return 0;
}
上⾯代码中,不管 sizeof
返回值的类型是什么, %zd
占位符(或 %zu
)都可以正确输出。如果当前系统 不⽀持 %zd
或 %zu
,可使⽤ %u
(unsigned int)或 %lu
(unsigned long int)代替。
五、在 VS2022 查询数据类型的取值范围
1.查询网站
2.在 limits.h文件 和 float.h文件 查询
(1)查询 limits.h 文件
- 打开VS2022的 储存磁盘 ,搜索 limits.h
(2)查询 float.h 文件
- 打开VS2022的 储存磁盘 ,搜索 float.h
热门推荐
数模算法如何与机器学习算法进行比较和区分
【前沿科普】破解蛋白质折叠的天书
销售房屋的七大策略及购房陷阱防范指南
“探讨PMC多重含义及其在各领域的重要应用”
以时尚思维形塑新中式服饰的设计美学
执法记录仪的使用方法是什么?使用过程中有哪些注意事项?
西兰花切达汤
图示化:从概念到应用的全面解析
退休人员档案的有效期是多久?
C++书籍推荐(持续更新...)
C++学习必看书籍清单:从入门到精通
研究生招生人数再创新高!考研难度下降了?!
如何设定有效的IT运维考核指标?
孕期保健全攻略:从饮食到心理,全方位呵护准妈妈健康
蓝光眼镜真的能保护眼睛吗?
限价房升值空间分析及优缺点解析
取消订单后,消费者权益如何保障?
哈雷保持器多少钱一副?对比透明保持器哪个舒服用的久?
年轻人长白头发,可能预示着这3种不妙的征兆
陈皮水是清火还是上火?泡陈皮的3个禁忌
如何进行团队宣讲
仔细看!是鹀还是麻雀?
恐惧症最有效的心理治疗方法
顶楼防水永不漏水最好的方法是什么
王海娟:养老金提到500元,并不能解决农村养老问题
奶粉储存全攻略:正确储存方法与防潮技巧
美债收益率曲线倒挂预测经济衰退的可靠性减弱
旅行社合同审核主体法律问题研究
消防应急照明灯具接线方法及注意事项
易语言源码保存方法详解:从基础操作到版本控制