数据类型介绍
signed 和 unsigned
数据类型的取值范围
变量
1.1字符
字符的解释:字符指类字形单位或符号,包括字母、数字、运算符号、标点符号和其他符号,以及一些功能性符号。字符是电子计算机或无线电通信中字母、数字、符号的统称,其是数据结构中最小的数据存取单位,通常由8个二进制位(一个字节)来表示一个字符。字符是计算机中经常用到的二进制编码形式,也是计算机中最常用到的信息形式。
char的解释:char型数据是计算机编程语言中只可容纳单个字符的一种基本数据类型。取值范围为 (-128 ~ +127)C语言中如int、long、short等不指定signed或unsigned时都默认为signed,但char在标准中不指定为signed或unsigned,编译器可以编译为带符号的,也可以编译为不带符号的。
1 char
2 signed char
3 unsigned char
1.2整形
1 //短整型
2 short [int]
3 signed short [int]
4 unsigned short [int]
5 //整型
6 int
7 signed [int]
8 unsigned [int]
9 //长整型
10 long [int]
11 signed long [int]
12 unsigned long [int]
13 //更长的整形
14 //C99中引入
15 long long [int]
16 signed long long [int]
17 unsigned long long [int]
1.3浮点型
float
double
long double
1.4布尔类型
C 语⾔原来并没有为布尔值单独设置⼀个类型,⽽是使⽤整数 0 表⽰假,⾮零值表⽰真。
在 C99 中也引⼊了 布尔类型 ,是专⻔表⽰真假的。
1 Bool
布尔类型的使⽤得包含头⽂件 <stdbool.h>
布尔类型变量的取值是:true或者false.
1 #define bool _Bool
2 #define false 0
3 #define true 1
signed
和unsigned
C 语⾔使⽤ signed 和 unsigned 关键字修饰字符型和整型类型的。
signed
关键字,表示⼀个类型带有正负号,包含负值;
unsigned
关键字,表示该类型不带有正负号,只能表示零和正整数。
对于 int 类型,默认是带有正负号的,也就是说int
等同于signed int
。
由于这是默认情况,关键字signed
⼀般都省略不写,但是写了也不算错。
signed int a;//等同于int a;
整数变量声明为 unsigned
的好处是,同样长度的内存能够表⽰的最⼤整数值,增⼤了⼀倍。
⽐如,16位的 signed short int
的取值范围是:-32768~32767,最⼤是32767;而
unsigned short int
的取值范围是:0~65535,最⼤值增⼤到了65,535。32位的 signed
int 的取值范围可以参看 limits.h
中给出的定义。
下⾯的定义是VS2022环境中,limits.h中相关定义。
#define SHRT_MIN (-32768) //有符号16位整型的最⼩值
#define SHRT_MAX 32767 //有符号16位整型的最⼤值
#define USHRT_MAX 0xffff //⽆符号16位整型的最⼤值
#define INT_MIN (-2147483647 - 1) //有符号整型的最⼩值
#define INT_MAX 2147483647 //有符号整型的最⼤值
字符类型 char
也可以设置 signed
和 unsigned
1.signed char c; // 范围为 -128 到 127
2.unsigned char c; // 范围为 0 到 255
注意,C 语⾔规定 char 类型默认是否带有正负号,由当前系统决定。这就是说, char
不等同于 signed
char
,它有可能是 signed char
,也有可能是unsigned char
。这⼀点与 int
不同, int
就是等同于 signed int
。
3. 数据类型的取值范围
上述的数据类型很多,尤其数整型类型就有short、int、long、long long
四种,为什么呢?其实每⼀种数据类型有自己的取值范围,也就是存储的数值的最大值和最小值的区间,有了丰富的类型,我们就可以在适当的场景下去选择适合的类型。如果要查看当前系统上不同数据类型的极限值:
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.变量
4.1变量的创建
了解清楚了类型,我们使⽤类型做什么呢?类型是⽤来创建变量的。什么是变量呢?C语言中把经常变化的值称为变量,不变的值称为常量。变量创建的语法形式是这样的:
1 data_type name;
2 | |
3 | |
4 数据类型 变量名
1 int age; //整型变量
2 char ch; //字符变量
3 double weight; //浮点型变量
变量在创建的时候就给⼀个初始值,就叫初始化。
1 int age = 19;
2 char ch = 'f';
3 double weight = 38.1;
4 unsigned int height = 10;
4.2 变量的分类
• 全局变量:在大括号外部定义的变量就是全局变量,全局变量的使用范围更广,整个工程中想使用,都是有办法使用的。
• 局部变量:在大括号内部定义的变量就是局部变量局部变量的使用范围是比较局限,只能在自己所在的局部范围内使用的。
如果局部和全局变量,名字相同呢?
其实当局部变量和全局变量同名的时候,局部变量优先使用。
全局变量和局部变量在内存中存储在哪⾥呢?
C语言中局部变量存在栈里,全局变量存静态存储区。
OK本次的关于C语言的数据类型和变量的介绍就到这里,欢迎大家指正。