下面来介绍一下C语言中的整数数据类型

1
2
3
4
5
char(字符型)---用于表示一个很小的整数,只占一个字节。
short(短整型)---用于表示一个不怎么大的整数,占两个字节。
int(整型)---用于表示一般整数,占四个字节。
long(长整型)---用于表达一个很大的整数,占四个字节。
long long(加长整形)---用于表达一个极大的整数,占八个字节。

其中long需要特别注意,分享一个我自己踩的坑。
long在windows环境下(32位和64位)占4字节,在linux32环境中占4字节但是在linux64环境中占8字节。
插一句题外话苹果的Macos属于linux。
C语言并未规定数据类型的大小范围。
数据类型的大小范围交由编译器和平台来决定。
这时候我们就要用到sizeof关键词(用于测量实体占用字节大小)来进行测量。
给一段查询大小程序

1
2
3
4
5
6
7
8
9
10
#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));
return 0;
}

占用字节越大,可表示的数就越大。
char(字符型)—只占一个字节。范围:(-128 +127)
short(短整型)—占两个字节。范围:(-32768 +32767)
int(整型)—占四个字节。范围:(-2147483648 +2147483647)
long(长整型)—占四个字节。范围:(-2147483648 +2147483647)
long long(加长整形)—占八个字节。范围:(-9223372036854775808 +9223372036854775807)
xXBPxA.jpg
根据上图我们可以看见取值范围是2的二进制位数减1次方,为什么要减一呢?
因为二进制的最高位用来表示这个数的正负了。
如果我们不想二进制的最高位当做符号位就要用到unsigned关键字。
xXBAqP.jpg

另外sizeof关键词不仅可以测试数据类型还可以测量变量和常量。
可以试一试下面的程序。

1
2
3
4
5
6
7
8
9
10
#include<stdio.h>
int main()
{
int a;
a=1;
printf("%d\n",sizeof(int));
printf("%d\n",sizeof(233));
printf("%d\n",sizeof(a));
return 0;
}