C语言技术笔记(二)

继上文:《C语言技术笔记(一)》

一.数据类型

在C语言中,数据类型大体可以分为内置类型和自定义类型,其中,内置类型有字符型,整型,浮点型,还有布尔类型;自定义类型有数组,结构体,枚举,还有联合体,大家可以看看下图,更好理解,舒服:

 下面我们先对内置类型进行简单了解:

(1)字符型

1.char

2.[signed] char

3.unsigned char

(2)整型

通俗易懂,也叫整数。

1.“int">>这个便是我们熟知的整形,当然,整形还分为长长整型,长整型与短整型:

短整型:

1.short [int]

2.[signed] short [int]

3.unsigned short [int]

长整型 :

1.long [int] 

2.[signed] long [int]

3.ungned long [int]

长长整型:

 1.long long [int]

2.[signed] long long [int]

3.unsigned long long [int]

(3)浮点型

通俗易懂,也叫有小数部分。

1.float
2.double
3.long double
在这里float是单精度浮点型, double是双精度浮点型,所以说double的精度会更高long double的精度当然就会比double更高。

(4)布尔类型

布尔类型在C语言中比较特殊,起初布尔类型不存在于C语言。而是单纯的用零表示假,非零表示真。但是在后来的C99中引入了布尔类型。所以说比较特殊。因此,使用布尔类型要运用到头文件------<stdbool.h> 

1.''_Bool'' ##在里也可以是''bool''

布尔类型变量的取值是:true或者false.
当然,每个数据类型它都有自己的长度,使用不同的数据类型创建出来的变量长度也有所不同,为了能够知道它的长度。下面我们介绍一种新的操作符------sizeof,用于测量数据类型的长度 。

(5)补充:sizeof操作符

sizeof 是⼀个关键字,也是操作符,专⻔是⽤来计算sizeof操作符数的类型⻓度的,单位是字节。
sizeof 操作符的操作数可以是类型,也可是变量或者表达式。
不过,在计算数据类型和表达式时,两者表述方式不同:
1.sizeof( 类型 )
2.sizeof 表达式
不难发现,在计算类型时要加括号,在计算表达式时,不用加括号,也可以说是省略。
       但是,sizeof 运算符的返回值,C语⾔只规定是⽆符号整数,并没有规定具体的类型,⽽是留给系统⾃⼰去决定,sizeof 到底返回什么类型。不同的系统中,返回值的类型有可能是 unsigned int ,也有可能是 unsigned long ,甚⾄是 unsigned long long , 对应的 printf() 占位符分别是 %u %lu %llu 。这样不利于程序的可移植性。
        C 语⾔提供了⼀个解决⽅法,创造了⼀个类型别名 size_t ,⽤来统⼀表⽰ sizeof 的返回值类型。对应当前系统的 sizeof 的返回值类型,可能是 unsigned int ,也可能是unsigned long long 。
        反正简单来说,''sizeof''的返回值是''size_t'' 

那么现在,我就用VS2022给大家演示一下不同数据类型的长度: 

 

还有,需要注意的是:sizeof表达式不计算,切记切记!切记切记!切记切记!

我还是用VS2022来给大家演示:

 

看吧,a还是2. 

 二.signed和unsigned

C 语⾔使⽤ signed unsigned 关键字修饰字符型和整型类型的。
1.signed 关键字,表⽰⼀个类型带有正负号,包含负值。
2.unsigned 关键字,表⽰该类型不带有正负号,只能表⽰零和正整数。
3.对于 int 类型,默认是带有正负号的,也就是说 int 等同于 signed int
4.由于这是默认情况,关键字 signed ⼀般都省略。
signed都有正负了,为什么还要另一个,那当然是另有作用(好处):
整数变量声明为 unsigned 的好处是,同样⻓度的内存能够表⽰的最⼤整数值,增⼤了⼀倍。⽐如,16位的signed short int 的取值范围是:-32768~32767,最⼤是32767;⽽unsigned short int 的取值范围是:0~65535,最⼤值增⼤到了65535。

三.变量

既然有了类型,那咱们就应该用类型来创建变量。 

(1)创建变量的基本格式

数据类型+空格+变量名;eg:"int year"---整型变量----与int有关:依此:char year---字符变量。

这里,int是数据类型。空格后面的year就是变量名。变量名可以自己输入,不过变量名尽量要起得有意义,而且不能与关键字冲突。  

(2)变量也有分类

变量分为全局变量和局部变量,字面上讲,全局大于局部,也就是说全局有优先权,但是在C语言里,有些情况会特殊点。

1.全局变量:在⼤括号外部定义的变量就是全局变量,全局变量的使⽤范围更⼴,整个⼯程中想使⽤,都是有办法使⽤的。
2.局部变量:在⼤括号内部定义的变量就是局部变量,局部变量的使⽤范围是⽐较局限,只能在⾃⼰所在的局部范围内使⽤的。

如果局部和全局变量,名字相同呢

其实当局部变量和全局变量同名的时候,局部变量优先使⽤。但是最好不要同名 。

补充:

 内存中的三个区域:栈区、堆区、静态区。

1. 局部变量是放在内存的栈区
2. 全局变量是放在内存的静态区
3. 堆区是⽤来动态内存管理的

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值