char | unsigned char |
signed char | |
short | unsigned short [ int ] |
signed short [ int ] | |
int | unsigned int |
signed int | |
long | unsigned long [ int ] |
signed long [ int ] |
那么为什么char字符型也要被归类为整型家族呢?
这是因为字符在内存中存储的是字符的ASCII码值,ASCII码值是整型,所以字符类型归类为整型家族。
在编译器中,其实signed int有符号整型与int是相同的,默认int a的a变量就是有符号的,但是在定义无符号的整型时,我们要注意不能缺少unsigned,例如:
- int a;
- //signed int a;
- unsigned int a;
同理,其实int就是signed int,short就是signed short,long就是signed long,那么char呢?注意这里的char与它们是不同的:
- char是否是signed有符号的,在C语言标准中是为定义的,取决于不同的编译器中。
这里注意在整型家族中,我们并没有提到long long类型,因为long long是一种较新的类型,在一些古老的编译器中,也不能支持使用long long,所以大家需要酌情使用long long类型。
float |
double |
构造类型,也称为自定义类型,就是可以根据自己的需求来设定的自定义类型。
数组类型 | |
结构体类型 | struct |
枚举类型 | enum |
联合类型 | union |
int * pi; |
char * pc; |
float * pf; |
void * pv; |
- void test(void)
- {
-
- }
我们看一下上面的代码,第一个void是表示test函数不会返回任何值;而第二个void则是表示test函数没有参数。
在一些古老的编程书籍中,会有在主函数中传参为void,这就表示,在使用main主函数时,不需要传参,但是其实main函数是有三个参数的。
- int main(void) //在使用main主函数时,可以不传参
- {
-
- }
-
- //main主函数的三个参数
- int main(int argc,char * argv,char * envp[])
- {
-
- }
大概了解了这个类型之后,今天讲的主要是整型家族以及浮点型家族在内存中的存储。
在编程中,我们需要创建变量,创建变量就需要开辟空间。而数据在内存中存储的都是二进制,计算机能够处理的是二进制的数据,整型和浮点型数据在内存中也都是以二进制的形式,进行存储的,那么整型浮点型二进制的表达形式有什么差异呢?