在C语言中,每个数据都有一个它对应的类型,将数据定义成具体的类型可以便于计算机运算,也可以有效的节约存储空间,程序员在编写代码时按需选取,例如,在计算机的二进制语言中,假设要存储一个字节的数据(8位)的整数,如果不考虑符号,那么最大能存储的数为2^8-1也就是255,当我们要定义的数比255小时,那我们只需要选用一个字节长度的数据类型即可,避免了资源的浪费。
char //字符数据类型
short //短整型
int //整型
long //长整型
long long //更长的整形
float //单精度浮点数
double //双精度浮点数
字符型就是存储一个ASCⅡ字符,包括中文字符、英文字符、数字字符、运算符以及其他一些特殊符号,这些符号我们大多可以在键盘上找到,这里就不具体放置ASCⅡ字符表了,网上可以直接查询。值得一提的是,字符在存储时,是以一个字节的二进制数的形式,只是如果被定义成char类型,计算机在读出数据后会按照ASCⅡ字符表将其转换成对应的字符。
整数型就是整数,short、int、long、long long都是整数型,区别是它们的长度不一样,那么也就意味着它们所能容纳的数据范围不同,越长的数据长度,可以容纳的范围更大。short与long两个限定符的引入可以为我们提供满足实际需要的不同长度的整形数。int通常代表特定机器中证书的自然长度。short类型通常为16位,long类型通常为32位,int类型可以为16位或32位。各编译器可以根据硬件特性自主选择合适的类型长度,但要遵循下列限制:short与int类型至少为16位,long类型至少为32位,并且short类型不得长于int类型,而int类型不得长于long类型。
浮点数就是小数,而这里的单双精度就是小数点后的位数。
当然,这里所有的数据类型都牵扯到符号的问题,可以在数据类型前加上unsigned表示无符号数,也就是大于等于0的数,加上signed表示有符号数,把数据的最高位变为符号位,0正1负,同时,因为少了最高位,数据范围也会相应变小很多。
关于字节长度我们可以再VS中利用sizeof函数看到:
#include <stdio.h>
int main()
{
printf("%d\n", sizeof(char));
printf("%d\n", sizeof(short));
printf("%d\n", sizeof(int));
printf("%d\n", sizeof(long));
printf("%d\n", sizeof(long long));
printf("%d\n", sizeof(float));
printf("%d\n", sizeof(double));
printf("%d\n", sizeof(long double));
return 0;
}