1.数据类型简介
在C语言中,有许许多多的数据类型,如整型,浮点型,他们分别表示整数和小数。其实所谓类型,就是指一类数据的相似特征,那么下面我们就来详细聊聊数据类型。
2.数据类型分类
2.1 整形
短整形
signed short[int]
unsigned short [int]
整形
[signed]int
unsigned int
长整形
long
unsigned long
更长的整形
long long[int]
unsigned long long
2.2 字符型
char
signed char //有符号的
unsigned char //无符号的
2.3 浮点型
float //单精度浮点数
double //双精度浮点数
long double
2.4 布尔类型
在以前,C语言并没有为布尔值单独设一个类型,而是用0表示假,非0表示真,但在C99中,专门引入了布尔类型,用来表示真假
_Bool
布尔类型的使用需要包含头文件<stdbool.h>.
布尔类型变量的取值:true或者false
2.5 补充:signed和unsigned
C 语⾔使⽤
signed
和
unsigned
关键字修饰 字符型和整型 类型的。
signed
关键字,表⽰⼀个类型带有正负号,包含负值;
unsigned
关键字,表⽰该类型不带有正负号,只能表⽰零和正整数。
对于
int
类型,默认是带有正负号的,也就是说
int
等同于
signed int
。
由于这是默认情况,关键字
signed
⼀般都省略不写,但是写了也不算错。
1
signed int
a;
2
//
等同于
int a;
int
类型也可以不带正负号,只表⽰⾮负整数。这时就必须使⽤关键字
unsigned
声明变量。
1
unsigned int
a;
整数变量声明为
unsigned
的好处是,同样⻓度的内存能够表⽰的最⼤整数值,增⼤了⼀倍。
3.数据类型的大小
3.1 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 。
3.2
#include<stdio.h>
int main()
{
size_t len1=sizeof(int);
size_t len2=sizeof(short);
size_t len3=sizeof(long);
size_t len4=sizeof(long long);
size_t len5=sizeof(char);
size_t len6=sizeof(float);
size_t len7=sizeof(double);
printf("len1=%zd,len2=%zd,len3=%zd,len4=%zd,len5=%zd,len6=%zd,len7=%zd",len1,len2,len3,len4,len5,len6,len7)
return 0;
}
请注意,在不同环境下,计算结果可能不同
以下是VS2022X64的环境
len1=4,len2=2,len3=4,len4=8,len5=1,len6=4,len7=8