数据类型大盘点&&长度计算

1. 数据类型大盘点

前言:C语⾔为我们提供了丰富的数据类型来描述我们⽣活中的各种数据
比如我们可以使用整型类型来描述整数,使⽤字符类型来描述字符,使⽤浮点型类型来描述⼩数。
所谓“类型”,就是相似的数据所拥有的共同特征,编译器只有知道了数据的类型,才知道怎么操作数据。
下⾯盘点⼀下C语⾔提供的各种数据类型,本章节主要探讨内置数据类型。
在这里插入图片描述
下⾯我们就来盘点⼀下C语⾔提供的各种数据类型吧,本章节主要探讨内置数据类型。(内置类型指C语言自身带有的类型,不可创造。自定义类型是指可由程序员创造的类型

1.1 字符型

 1. char //全称character
 2.[signed] char //有符号的char 
 3.unsigned char //⽆符号的char 

1.2 整型

有四类,包括: 基本整型 int
短整型 short int
长整型 long int
双长整型 long long int (C99中才引⼊的)

下面是扩展类型

•短整型 
1short [int]
2[signed] short [int]		//有符号的短整型
3unsigned short [int]		//无符号的短整型
•整型 
1int
2[signed] int		//所有编译器都自动将int等效为signed int
3unsigned int		//无符号的整型
•⻓整型 
1long [int]
2[signed] long [int]		//有符号的长整型
3unsigned long [int]		//无符号的长整型
•更⻓的整型 (C99中引⼊) 
1long long [int]
2[signed] long long [int]		//有符号的双长整型
3unsigned long long [int]		//无符号的双长整型

1.3 浮点型

1,float		//单精度浮点型
2,double	//双精度浮点型
3,long double	//高精度浮点型

1.4 布尔类型

原先C语言使⽤整数 0 表⽰假,⾮零值表⽰真,后来为了方便,在C99中引⼊了 布尔类型 ,是专⻔表⽰真假的。
在C99中引入的是“_Bool”形式,后来为了好写改成了“bool”形式。也就是说以上两种形式的可以使用。

布尔类型的使⽤得包含头⽂件 <stdbool.h>
布尔类型变量的取值是: true 或者false

代码演⽰:

1	_Bool flag = true;
2	if (flag)
3		printf("i like C\n");

2. 各种数据类型的⻓度

每⼀种数据类型都有⾃⼰的⻓度,使⽤不同的数据类型,能够创建出⻓度不同的变量,变量⻓度的不同,存储的数据范围就有所差异。

2.1 sizeof 操作符

介绍:sizeof 是⼀个关键字,也是操作符,专⻔是⽤来计算sizeof的操作符数的类型⻓度的,单位是字节。
sizeof操作符的操作数可以是类型,也可是变量或者表达式。所写形式不同,如下
在这里插入图片描述

sizeof 的操作数如果不是类型,是表达式的时候,可以省略掉后边的括号的。
sizeof 后边的表达式是不真实参与运算的,根据表达式的类型来得出⼤⼩。
sizeof 的计算结果是== size_t== 类型的
在这里插入图片描述

2.2 数据类型长度

#include <stdio.h>
int main()
{
 printf("%zd\n", sizeof(char));
 printf("%zd\n", sizeof(_Bool));
 printf("%zd\n", sizeof(short));
 printf("%zd\n", sizeof(int));
 printf("%zd\n", sizeof(long));
 printf("%zd\n", sizeof(long long));
 printf("%zd\n", sizeof(float));
 printf("%zd\n", sizeof(double));
 printf("%zd\n", sizeof(long double));
 return 0;
}

在VS2022X64配置下的输出:

1		//单位:字节
1		//单位:字节
2		//单位:字节
4		//单位:字节
4		//单位:字节
8		//单位:字节
4		//单位:字节
8		//单位:字节
8		//单位:字节

2.3 字节单位换算

2进制中,每一个数字占用一个比特位(bit),比如“ 10 ”占两个比特位。8个比特位组成1个字节(Byte)。

1 Byte = 8 bit
1 KB = 1024 Byte
1 MB = 1024 KB
1 GB = 1024 MB
1 TB = 1024 GB
1 PB = 1024 TB

1024 = 210

2.4 sizeof 中表达式不计算

//测试:sizeof中表达式不计算 
#include <stdio.h>
int main()
{
 short s = 2;
 int b = 10;
 printf("%d\n", sizeof(s = b+1));
 printf("s = %d\n", s);
 return 0;
}

sizeof 在代码进⾏编译的时候,就根据表达式的类型确定了,类型的常⽤,⽽表达式的执⾏却要在程序运⾏期间才能执⾏,在编译期间已经将sizeof处理掉了,所以在运⾏期间就不会执⾏表达式了。

评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值