c语言的基本数据类型包括:
整型:基本型(int)、短整型(short)、长整型(long)、无符号型(unsigned),其中,无符号型可以与前三者组合形成:
- 无符号基本型(unsigned 或 unsigned int)
- 无符号短整型(unsigned short)
- 无符号长整型(unsigned long)
- 无符号更长整型(unsigned long long) ---------------- c99中引入
无符号型的意义在于将所有输入的数都视为正数和零,比如int的取值范围为-32,768 ~ 32,767或-2,147,483,648 ~ 2,147,483,647,那么unsigned int 的取值范围为0 ~ 65,535 或 0 ~ 4,294,967,295 (正数的取值范围扩大两倍)
tips:同时还存在符号型(signed),一般情况下signed int / short / long 等价于 int / short /long
浮点型:单精度浮点型(float)、双精度浮点型(double)、高精度浮点型(long double)
float精确到小数点后六位,double精确到小数点后15位,long double精确到小数点19位
字符类型:char 和 unsigned char
布尔类型:_Bool = true 和 flase (0表示flase,非0数表示true)---------- c99中引入
#define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> #include <stdbool.h> //使用布尔类型需要包含头文件 int main() { _Bool flag = true; if (flag) printf("i like C\n"); return 0; }
数据类型的取值范围
为了代码的可移植性,当我们需要知道某种整数类型的极限值时,应该尽量使用以下这些常量:
SCHAR_MAX :signed char 的最⼩值和最⼤值 SHRT_MAX :short 的最⼩值和最⼤值 INT_MAX :int 的最⼩值和最⼤值 LONG_MAX :long 的最⼩值和最⼤值 LLONG_MAX :long long 的最⼩值和最⼤值 UCHAR_MAX :unsigned char 的最⼤值 USHRT_MAX :unsigned short 的最⼤值 UINT_MAX :unsigned int 的最⼤值 ULONG_MAX :unsigned long 的最⼤值 ULLONG_MAX :unsigned long long 的最⼤值
具体代码如下:
#define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> #include <limits.h> //头文件中说明了整型类型的取值范围 #include <float.h> //头文件中说明了浮点类型的取值范围 int main() { printf("char类型的变量存储的是从%d到%d的值\n", CHAR_MIN, CHAR_MAX); printf("unsigned char类型的变量存储的是从%d到%d的值", UCHAR_MAX); return 0; }
各类基本数据类型所占空间大小
#define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> int main() { printf("%d\n", sizeof(int)); //4字节 printf("%d\n", sizeof(unsigned int)); //4字节 printf("%d\n", sizeof(short)); //2字节 printf("%d\n", sizeof(unsigned short)); //2字节 printf("%d\n", sizeof(long)); //4字节 printf("%d\n", sizeof(unsigned long)); //4字节 printf("%d\n", sizeof(char)); //1字节 printf("%d\n", sizeof(unsigned char)); //1字节 printf("%d\n", sizeof(long long)); //8字节 printf("%d\n", sizeof(float)); //4字节 printf("%d\n", sizeof(double)); //8字节 printf("%d\n", sizeof(long double)); //8字节 return 0; }