整型
整型用Int来表示代表一个整数,具体可分为以下内容:
有符号整型 | 无符号整型 |
---|---|
signed int | usigned int |
signed short int | usigned short int |
signed long int | unsigned long int |
signed long long int | unsigned long longed int |
有符号整型表示0和正负数的整型,无符号整型表示0和整数的整型,也就是说:整型前面加上unsigned就无法表示负数了。
值得注意的是,如果不添加类型说明符(signed/unsigned),它默认就是signed,所以平常书写无特殊要求时省略signed即可。另外,短整型(short
int)长整型(long int),更长的整型(long long int),也可略写为short,long,long long。
那么这四种整型有什么区别呢?我们可以输入以下代码查看其大小
我们可以发现不同类型的整型所占大小一般不同(long long是8,忘写了),在c语言中有以下规律:sizeof(short)<=sizeof(int)<=sizeof(long),具体大小由编译器决定。
并且有无字符类型并不影响其大小,合理利用不同类型整型可以减少内存的大小(平常用不到直接用int就行)。
另外图表中的各个类型所能表示的取值范围也不同,我们可以通过查找<limits.h>文件来查看或者输入以下代码
根据图我们可以发现,有符号虽然有能表示负数的优点,但他表示的绝对值却几乎只无符号整型绝对值的一半。由此可知,如果需要处理些比较大的数,那么用无符号整型比较合适。
字符型
字符型char是用来专门存储各类字符的一种类型,字符包括一个字母,数字或者一个特殊符号(注意:字母要用单引号围起来,例如:char A =‘a’),但并不包括汉字,这是因为字符型只能存储一个字节(所有编译器均为1),而一个汉字占两个字节。
另外值得注意的是,几个连起来的数字依然算是一个字符但它所能表达的数字大小有限,但如果数字超出上限它将在它的范围内进行一个循坏。
字符和整型一样也存在有无符号的区别,但与整型不同的是对于未声明的char类型,它的默认状态由编译器来决定,我们可以输入以下代码来检测
#include<stdio.h>
#include<limits.h>
int main() {
printf("%d", CHAR_MIN);
return 0;
}
我们可以看出它最小值为负数(-128),所以我的编译器(vs2019)默认是有符号类型。
浮点型
根据上面所述,整型Int和字符型char并不能表示小数,此时如果我们想表示一个小数就要用到浮点型,浮点型可分为以下几种:
单精度浮点数 | 双精度浮点数 | 多精度浮点类型 | |
---|---|---|---|
字符 | float | double | long double |
他们的精度由他们所占据的字节数决定,字节数越多精度越高,如图:
由此可以得出:在我自己的编译器中double和long double的精准度是相同的。
精准度决定一个数值在一定范围内的准确性,准确度越高这个范围也就越大
y
单精度在处理器上比双精度更快而且只占用双精度一半的空间,但是当值很大或很小的时候,它将变得不精确。
另外要注意的是在输入小数是其默认状态为double,此时代码将无法运行,所以我们要在数字后面加上f(long double后加L),这就相当于在和计算机声明这个数的属性。
布尔类型
在计算机中0代表假,非零表示真,在代码中用_Bool/bool表示,例如:
#include<stdbool.h>
int main()
{
bool a = true;
if (a)
printf("真");
else
printf("假");
return 0;
}
与其他类型不同的是bool只有两种形式true(真)false(假),真和假也可以用数字来表示(非0和0)。
若有出错的地方,还望指出,Thanks♪(・ω・)ノ