目录
一、数据类型
1.1数据类型的介绍
字符型
char
[
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
]
//
更⻓的整型
//C99
中引⼊
long long
[
int
]
[
signed
]
long long
[
int
]
unsigned long long
[
int
]
浮点型
float
double
long double
布尔类型
C 语⾔原来并没有为布尔值单独设置⼀个类型,⽽是使⽤整数
0
表⽰假,⾮零值表⽰真。
在
C99
中也引⼊了 布尔类型 ,是专⻔表⽰真假的。
1
_Bool
布尔类型的使⽤得包含头⽂件
<stdbool.h>
布尔类型变量的取值是:true或者false
1#define bool _Bool
2
3#define false 0
4
#
define
true 1
代码演示:
1.2各种数据类型的⻓度
每⼀种数据类型都有⾃⼰的⻓度,使⽤不同的数据类型,能够创建出⻓度不同的变量,变量⻓度的不 同,存储的数据范围就有所差异。
数据类型 32位 64位 打印格式
char 字符数据类型 1字节 1字节 %c、%s
short 短整型 2字节 2字节 %d
int 整型 4字节 4字节 %d
long 长整形 4字节 4字节(linux为8字节) %ld
long long 长长整形 8字节 8字节 %lld
float 单精度浮点型 4字节 4字节 %f
double 双精度浮点型 8字节 8字节 %lf
各数据类型的大小及取值范围可参照此处:
C语言各数据类型大小和取值范围_c语言数据类型大小-CSDN博客
各数据类型的长度计算方式:
在VS2022 X64配置下的输出:
1.3数据类型⻓度(sizeof操作符计算类型长度)
sizeof 是⼀个关键字,也是操作符,专⻔是⽤来计算sizeof操作符数的类型⻓度的,单位是字节。
sizeof
操作符的操作数可以是类型,也可是变量或者表达式。
sizeof
的操作数如果不是类型,是表达式的时候,可以省略掉后边的括号的。
sizeof
后边的表达式是不真实参与运算的,根据表达式的类型来得出⼤⼩。
sizeof
的计算结果是
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 。
比如:
1.4数据类型的取值范围
其实每⼀种数据类型有⾃⼰的取值范围,也就是存储的数值的最⼤值和最⼩值的区间,有了丰富的类 型,我们就可以在适当的场景下去选择适合的类型。如果要查看当前系统上不同数据类型的极限值:
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 的最⼤值。
二、变量及常量
2.1变量
2.1.1创建
变量在创建的时候就给⼀个初始值,就叫初始化。
1
data_type name;
2
| |
3
| |
4
数据类型
变量名
2.1.2变量的分类
•
全局变量:在⼤括号外部定义的变量就是全局变量
•
局部变量:在⼤括号内部定义的变量就是局部变量
注意 :当局部变量和全局变量同名的时候,局部变量优先使⽤。
打印的结果为 “10”
2.1.3全局变量和局部变量在内存中存储的位置
内存中的三个区域:栈区、堆区、静态区。
1.
局部变量是放在内存的栈区
2.
全局变量是放在内存的静态区
3.
堆区是⽤来动态内存管理的
(还没学。后期补)
2.2常量
(摘抄自-蒋灵瑜的笔记本)
2.2.1 字面常量
例:3.14、100、‘w’、"abc"等
strlen求字符数组的长度
字符串的结束标志是转义字符’\0’,strlen遇到’\0’即返回。
2.2.2 const修饰的常变量
例:const int a=100;//在C语言中,const修饰的a,本质是变量,但是不能直接修改,有常量的属性。
2.2.3 #define定义的标识符常量
例:#define MAX 1000
#define STR “abcd”
2.2.4 枚举常量
三、强制类型转换
在操作符中还有⼀种特殊的操作符是强制类型转换,语法形式很简单,形式如下
(类型)
//请看代码:
int a = 3.14;//a的是int类型, 3.14是double类型,两边的类型不⼀致,编译器会报警告
//为了消除这个警告,我们可以使⽤强制类型转换:
int a = (int)3.14;//意思是将3.14强制类型转换为int类型,这种强制类型转换只取整数部分
强制类型转换都是万不得已的时候使用,如果不需要强制类型转化
就能实现代码,⾃然更好。