目录
1. 数据类型
1.1 字符型
1.2 整型
1.3 浮点型
1.4 布尔类型
1.5 数据类型的长度
2.变量
2.1 变量的创建
2.2 变量的分类
3. 扩展
结言~
框架
本篇文章主要介绍内置类型,后续会介绍数组。
char //character
[signed] char //有符号的
unsigned char //⽆符号的
//短整型
short [int]
[signed] short [int]
unsigned short [int]
//整型
int
[signed] int
unsigned int
//⻓整型
long [int]
[signed] long [int]
unsigned long [int]
float//单精度浮点数
double//双精度浮点数
C语言中的float和double的主要区别在于它们的数据表示范围、精度以及所占用的存储空间:
1.数据表示范围:
float:通常被称为单精度浮点数,它的指数范围为-127至128,而数值范围为3.4E-38至3.4E+38(乘以10^38)。
double:也称为双精度浮点数,其指数范围为-1023至1024,而数值范围为1.7E-308至1.7E+308(乘以10^308)。
2.精度:
float:能够提供的有效数字位数为8位,这意味着它最多能表示大约3.4E+38的数值。
double:能够提供的有效数字位数为16位,这意味着它可以表示大约1.7E+308的数值。
3.存储空间:
float:占用4个字节(32位)的内存空间。
double:占用8个字节(64位)的内存空间。
4.运算速度:
float:在CPU上处理的速度一般比处理double快。
5.有效数字位数:
float:只能提供8位有效数字。
double:可提供16位有效数字。
6.注意事项:
在编程中,应根据实际需求选择合适的类型,以避免精度损失或溢出。
如果不特别声明,C语言会自动将小数视为double类型,因此在需要float时,必须进行强制转换。
综上所述,float主要用于需要较高精度但不需要非常大的数值表示的场景,而double则用于需要更高精度的数值计算,尤其是在科学计算领域。
C 语⾔原来并没有为布尔值单独设置⼀个类型,⽽是使⽤整数 0 表⽰假,⾮零值表⽰真。
在 C99 中也引⼊了 布尔类型 ,是专⻔表⽰真假的。
关于C99可以去查一下,本文不做解释。
布尔类型的使⽤得包含头⽂件
_Bool
布尔类型变量的取值是: true或者false
#include
_Bool flag = true;
if (flag)
printf(" like \n")
大致了解数据类型后,下面介绍数据类型的长度。
这里需要引入sizeof操作符
sizeof 是⼀个关键字,也是操作符,专⻔是⽤来计算sizeof的操作符数的类型⻓度的,单位是字
节。
内存单位是用来描述计算机或其他电子设备中存储容量的单位。常见的内存单位有:
B(bit):计算机中数据的最小单位,可以是0或1。
KB(Kilobyte):1KB等于1024个字节,常用于描述较小的内存容量。
MB(Megabyte):1MB等于1024个KB,常用于描述计算机的内存容量。
GB(Gigabyte):1GB等于1024个MB,常用于描述较大的内存容量。
TB(Terabyte):1TB等于1024个GB,常用于描述非常大的内存容量。
字节(Byte)是计算机信息技术用于计量存储容量的一种计量单位,也表示一些计算机编程语言中的数据类型和语言字符。
sizeof操作符的操作数可以是类型,也可以是变量或者表达式。
sizeof (类型)
sizeof 表达式
sizeof 的操作数如果不是类型,是表达式的时候,可以省略掉后边的括号的。
sizeof 后边的表达式是不真实参与运算的,根据表达式的类型来得出⼤⼩。
#include
int main()
{
short a = 2;
int b = 10;
printf("%d\n", sizeof(a = b + 1));//2
printf("%d\n", sizeof(b = a + 1));//4
return 0;
}
Why?这里可能有疑惑:
sizeof 在代码进⾏编译的时候,就根据表达式的类型确定了,类型的常⽤,⽽表达式的执⾏却要在
程序运⾏期间才能执⾏,在编译期间已经将sizeof处理掉了,所以在运⾏期间就不会执⾏表达式了。
运行结果
下面利用sizeof计算数据类型长度
#include
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;
}
运行结果
sizeof 运算符的返回值,C 语⾔只规定是⽆符号整数,并没有规定具体的类型,⽽是留给
系统⾃⼰去决定, sizeof 到底返回什么类型。不同的系统中,返回值的类型有可能是
unsigned int ,也有可能是 unsigned long ,甚⾄是 unsigned long long ,
对应的 printf() 占位符分别是 %u 、 %lu 和 %llu 。这样不利于程序的可移植性。
C 语⾔提供了⼀个解决⽅法,创造了⼀个类型别名 size_t ,⽤来统⼀表⽰ sizeof 的返
回值类型。对应当前系统的 sizeof 的返回值类型,可能是 unsigned int ,也可能是
unsigned long long 。
引入占位符%zd
关于占位符后面会介绍。
概念:C语⾔中把经常变化的值称为变量,不变的值称为常量。
上面了解了类型,我们使用类型做什么呢?
答案是用来创建变量。
变量创建的语法形式是这样的:
data_type name;
| | |
| | |
数据类型 变量名
如:
int age; //整型变量
char ch; //字符变量
double weight; //浮点型变量
变量在创建的时候就给一个初始值,就叫初始化。
如:
int age = 18;
char ch = 'w';
double weight = 48.0;
unsigned int height = 100;
• 全局变量:在⼤括号外部定义的变量就是全局变量
全局变量的使⽤范围更⼴,整个⼯程中想使⽤,都是有办法使⽤的。
• 局部变量:在⼤括号内部定义的变量就是局部变量
局部变量的使⽤范围是⽐较局限,只能在⾃⼰所在的局部范围内使⽤的。
变量在创建时,要初始化。全局变量不初始化为0,局部变量不初始化为随机值。
#include
int global=1;//全局变量
int main()
{
int local=2;//局部变量
printf("%d\n", local);
printf("%d\n", global);
return 0;
}
运行结果
如果局部和全局变量名字相同呢?
#include
int local =1;//全局变量
int main()
{
int local=2;//局部变量
printf("%d\n", local);
return 0;
}
运行结果
其实当局部变量和全局变量同名的时候,局部变量优先使⽤。
全局变量和局部变量在内存中存储在哪⾥呢?
⼀般我们在学习C/C++语⾔的时候,我们会关注
内存中的三个区域:栈区、堆区、静态区。
1. 局部变量是放在内存的栈区
2. 全局变量是放在内存的静态区
3. 堆区是⽤来动态内存管理的(后期会介绍)
其实内存区域的划分会更加细致,以后在操作系
统的相关知识的时候会介绍。
本篇文章多引用鹏哥C语言课件,对我学习C语言有很大帮助。若想更深刻的了解数据类型和变量可以去B站看相关视频。
这一章为大家介绍了基本的数据类型和变量相关知识,希望能对大家有所帮助!!