1.数据类型(暂时先了解内置类型)
1.字符型(character)(【】内的代表可加可不加,整型也是如此)
2.整型
3.浮点型
4.布尔类型(用于表示真/假)
需要注意的是,C语言中也可使用整数0表示假,非零值表示真。
并且在使用布尔类型时需要包含头文件<stdbool.h>,布尔变量的取值是true或者false
也可使用整数0与其他非零值来表示真假如下图
或者也可如下表示真假
2.各种数据类型的长度
每⼀种数据类型都有⾃⼰的⻓度,使⽤不同的数据类型,能够创建出⻓度不同的变量,变量⻓度的不
同,存储的数据范围就有所差异。
1.sizeof操作符
sizeof
是⼀个关键字,也是操
作符,专⻔是⽤来计算sizeof操作符数的类型⻓度的,单位是
字节
。
sizeof
操作符的操作数可以是类型,也可是变量或者表达式。
我们首先对字节有个了解

对于使用sizeof操作符,由于其操作结果为size_t类型,所以其对应的占位符最好使用%zd

且需注意

我们仍需注意的是,
sizeof中的表达式不计算,
sizeof
在代码进⾏编译的时候,就根据表达式的类型确定了,⽽表达式的执⾏却要在
程序运⾏期间才能执⾏,在编译期间已经将sizeof处理掉了,所以在运⾏期间就不会执⾏表达式了。

由此便可看出sizeof中的表达式并不会计算。
2.signed与unsighed
C 语⾔使⽤
signed
和
unsigned
关键字修饰字符型和整型类型的(无浮点型)
signed
关键字,表⽰⼀个类型带有正负号,包含负值;
unsigned
关键字,表⽰该类型不带有正负号,只能表⽰零和正整数。
对于
int
类型,默认是带有正负号的,也就是说
int 等同于 signed int
。
由于这是默认情况,关键字
signed
⼀般都省略不写。
int
类型也可以不带正负号,只表⽰⾮负整数。这时就
必须使⽤关键字 unsigned 声明变量。
整数变量声明为 unsigned 的好处:
同样⻓度的内存能够表⽰的最⼤整数值
增⼤了⼀倍
。
⽐如,16位的
signed short int
的取值范围是:-32768~32767,最⼤是32767;⽽
unsigned short int
的取值范围是:0~65535,最⼤值增⼤到了65,535。
unsigned int
⾥⾯的
int 也
可以省略。
而对于char型我们需要格外注意,C 语⾔规定 char 类型默认是否带有正负号,由当前系统决定。
这就是说,
char
不等同于
signed char
,它有可能是
signed char
,也有可能是
unsigned char
。
这⼀点与
int
不同,
int
就是等同于
signed int
。
3.数据类型的取值范围
其实每⼀种数据类型有⾃⼰的取值范围,也就是存储的数值的最⼤值和最⼩值的区间,如果要查看当前系统上不同数据类型的极限值:limits.h ⽂件中说明了整型类型的取值范围,float.h 这个头⽂件中说明浮点型类型的取值范围,也可通过以下常量了解极限值
• SCHAR_MIN , SCHAR_MAX :signed char 的最⼩值和最⼤值。
• SHRT_MIN , SHRT_MAX :short 的最⼩值和最⼤值。
• INT_MIN , INT_MAX :int 的最⼩值和最⼤值。
• LONG_MIN , LONG_MAX :long 的最⼩值和最⼤值。
• LLONG_MIN , LLONG_MAX :long long 的最⼩值和最⼤值。
• UCHAR_MAX :unsigned char 的最⼤值。
• USHRT_MAX :unsigned short 的最⼤值。
• UINT_MAX :unsigned int 的最⼤值。
• ULONG_MAX :unsigned long 的最⼤值。
• ULLONG_MAX :unsigned long long 的最⼤值
4. 变量
1.变量的创建
我们了解类型的目的就是用于创建变量,变量是经常变化的值,不变的值叫常量。
变量创建的语法:
如此例
而变量创建时我们应该给其一个初始值使其初始化2.bi
2.变量的分类
•
全局变量:在⼤括号外部定义的变量就是全局变量
全局变量的使⽤范围更⼴,整个⼯程中想使⽤,都是有办法使⽤的。
•
局部变量:在⼤括号内部定义的变量就是局部变量
局部变量的使⽤范围是⽐较局限,只能在⾃⼰所在的局部范围内使⽤的。

由此图可较清晰了解其区别
特性:局部变量优先性
当局部变量和全局变量
同名
时,局部变量优先使用

那么局部变量与全局变量在内存中储存在哪里呢?
⼀般我们在学习C/C++语⾔的时候,我们会关注
内存中的三个区域:栈区、堆区、静态区。

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