一.计算机中的存储单位
在学习本节内容前,先介绍一下计算机的存储单位,存储单位是用来衡量数据存储量大小的一种标准。它们从最小的单位开始,逐级向上扩展,以满足不同层次的存储需求。
计算机中最小的数据单位为比特bit,只能存放一个二进制数,即0或1。
计算机中表示存储容量的最常用的基本单位为字节Byte,一个字节由8个二进制位(bit)组成,常用的英文字符占用一个字节,而中文汉字则占用两个字节。
从字节开始,后续每上升一个单位,其容量都是前一个的1024倍,即2的十次方。
即1024Byte=1KB,1024KB=1MB,1024MB=1GB,以此类推,后续还有TB,PB,ZB,EB,YB
二.数据类型介绍
C语⾔提供了丰富的数据类型来描述⽣活中的各种数据。如使⽤整型类型来描述整数,使⽤字符类型来描述字符,使⽤浮点型类型来描述⼩数。 所谓“类型”,就是相似的数据所拥有的共同特征,编译器只有知道了数据的类型,才知道怎么操作数据。
数据类型分为内置类型和自定义类型,内置类型为编译器所自带的类型,自定义类型为自创的类型,在本章中只介绍内置类型,自定义类型将于后续进行介绍。
一)内置类型
内置类型包含整型,字符型,浮点型等。
1.整型
整形 | 短整型 | 长整形 | 更长的整形 |
int | short int | long int | long long int |
signed int | signed short int | signed long int | signed long long int |
unsigned int | unsigned short int | unsigned long int | unsigned long long int |
上表中,int为整型类型,在int前的short,long,signed等是用来修饰整形变量的大小和符号的,下文会进行集中介绍
2.字符型
char为字符型,没有int那样多的用来修饰大小的修饰符,只有用来修饰符号的signed和usigned,可以组成char,signed char,unsigned char
3.浮点型
浮点型分为单精度浮点型float和双精度浮点型double,以及long double。
浮点型数据在进行算术运算时,可能会引入舍入误差,因为并不是所有的实数都可以精确地表示为二进制小数。这种误差在进行大量或复杂的计算时可能会累积,导致结果的不精确。
二)sizeof操作符
1.sizeof的定义
sizeof是⼀个关键字,也是操作符,专⻔是⽤来计算sizeof的操作符数的类型⻓度的,单位是字节。
sizeof操作符的操作数可以是类型,也可是变量或者表达式。
1.sizeof (类型)
2.sizeof 表达式
sizeof的操作数如果不是类型,是表达式的时候,可以省略掉后边的括号。
sizeof后边的表达式是不真实参与运算的,根据表达式的类型来得出⼤⼩。
sizeof的计算结果是size_t类型的。
关于size_t类型:
sizeof运算符的返回值,C语⾔只规定是⽆符号整数,并没有规定具体的类型,⽽是留给系统⾃⼰去决定,sizeof到底返回什么类型。不同的系统中,返回值的类型有可能是unsigned int,也有可能是unsigned long,甚⾄是unsigned long long,对应的printf()占位符分别是%u、%lu和%llu。这样不利于程序的可移植性。
C语⾔提供了⼀个解决⽅法,创造了⼀个类型别名size_t,⽤来统⼀表⽰sizeof的返回值类型。对应当前系统的sizeof的返回值类型,可能是unsigned int,也可能是unsigned long long。
关于返回值:
返回值是某些语句或函数执行完毕后,将该函数或语句的运行结果传给调用这个函数或语句的调用者,这个值就是返回值。
2.数据类型的长度
三.signed和unsigned
C语⾔使⽤signed和unsigned关键字修饰字符型和整型类型的。
signed关键字,表⽰⼀个类型带有正负号,包含负值;
unsigned关键字,表⽰该类型不带有正负号,只能表⽰零和正整数。
对于int类型,默认是带有正负号的,也就是说int等同于signed int。由于这是默认情况,关键字signed⼀般都省略不写,但是写了也不算错。
整形变量声明为非负的好处是同样⻓度的内存能够表⽰的最⼤整数值,增⼤了⼀倍。
⽐如,16位的signed short int的取值范围是:-32768~32767,最⼤是32767;⽽unsigned short int的取值范围是:0~65535,最⼤值增⼤到了65,535。
四.变量
C语⾔中把经常变化的值称为变量,不变的值称为常量。
一)变量的创建
创建变量,就需要用到上述的类型,创建不同类型的变量的格式为data_type name;,data_type为任意的数据类型,name为变量名,由自己命名,命名时以简便易懂为主。
变量在创建的时候就给⼀个初始值,就叫初始化。
二)变量的分类
全局变量:在⼤括号外部定义的变量就是全局变量,全局变量的使⽤范围更⼴,整个⼯程中想使⽤,都是有办法使⽤的。
局部变量:在⼤括号内部定义的变量就是局部变量,局部变量的使⽤范围是⽐较局限,只能在⾃⼰所在的局部范围内使⽤的。
当局部变量和全局变量同名的时候,局部变量优先使⽤
上半部分的内容就先到这里了,感谢大家观看,如有纰漏或错误,欢迎大家提出与指正。也欢迎大家来评论区提问与讨论,共同进步,谢谢大家。