C 语言中的基础数据类型

整型

什么是整型

整型,即整数类型,用于表示整数的数据类型,通常指 int 类型,广义上包括长整型 long long、无符号整型 unsigned int 等整数类型。


整型的存储大小与存储范围

以64位计算机为例

类型存储大小存储范围
int4字节-231 到 231-1
unsigned int4字节0 到 232-1
long4字节-231 到 231-1
unsigned long4字节0 到 232-1
long long8字节-263 到 263-1
unsigned long long8字节0 到 264-1

代码实例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <stdio.h>

int main()
{
int a = -2147483647 - 1;
int b = 2147483647;
printf("int可表示的范围:%d ~ %d\n", a, b);

unsigned int c = 4294967295;
printf("unsigned int可表示的范围:0 ~ %u\n", c);

long d = -2147483647 - 1;
long e = 2147483647;
printf("long可表示的范围:%ld ~ %ld\n", d, e);

unsigned long f = 4294967295;
printf("unsigned long可表示的范围:0 ~ %lu\n", f);

long long g = -9223372036854775807 - 1;
long long h = 9223372036854775807;
printf("long long可表示的范围:%lld ~ %lld\n", g, h);

unsigned long long i = 18446744073709551615;
printf("unsigned long long可表示的范围:0 ~ %llu\n", i);

return 0;
}


浮点型

什么是浮点型

浮点型,即浮点数类型,利用科学计数法来表示实数,常用于表示小数或是量级比较大的大数,包括单精度浮点型 float、双精度浮点型 double、长双精度浮点型 long double。


浮点型的存储大小、存储范围与精度

以 64 位计算机为例

类型存储大小存储范围精度
float4字节1.175494E-38 到 3.402823E+386位
double8字节2.225074E-308 到 1.797693E+30815位
long double8字节2.225074E-308 到 1.797693E+30815位

代码实例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <stdio.h>
#include <float.h>

int main()
{
printf("float 存储最大字节数 : %llu\n", sizeof(float));
printf("float 最小值: %E\n", FLT_MIN);
printf("float 最大值: %E\n", FLT_MAX);
printf("float 精度值: %d\n\n", FLT_DIG);

printf("double 存储最大字节数 : %llu\n", sizeof(double));
printf("double 最小值: %E\n", DBL_MIN);
printf("double 最大值: %E\n", DBL_MAX);
printf("double 精度值: %d\n\n", DBL_DIG);

printf("long double 存储最大字节数 : %llu\n", sizeof(long double));
printf("long double 最小值: %E\n", LDBL_MIN);
printf("long double 最大值: %E\n", LDBL_MAX);
printf("long double 精度值: %d\n", LDBL_DIG);

return 0;
}

字符型

什么是字符型

字符型,是用于表示字符的数据类型,在 C 语言中,具有与整型相同的运算逻辑,本质上是整型空间到 ASCII 表上的一组映射,通常指 char 类型,除此之外还有无符号字符型 unsigned char。


字符型的存储大小、存储范围与映射范围

以64位计算机为例

类型存储大小存储范围
char1字节-128 到 127 或 0 到 255
unsigned char1字节0 到 255

ASCII 码表:
ASCII 码表


代码实例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h>

int main()
{
char H = 72;
char e = 101;
char l = 108;
char o = 111;
char space = 32;
char W = 87;
char r = 114;
char d = 100;
char exclamatoryMark = 33;
printf("%c%c%c%c%c%c%c%c%c%c%c%c\n", H, e, l, l, o, space, W, o, r, l, d, exclamatoryMark);

return 0;
}