前言:
由于对C语言的理解不够深刻,且距离上次学习C语言的时间过于“久远”,所以本人准备重新开始学习C语言。
那么刚好借这个机会,既向大家分享我的学习笔记,同时又能监督我自己去努力学习这门语言,为将来从事嵌入式行业打下基础!!
学习C语言是很漫长的,要重新整理一遍学习的内容更是反复且枯燥的。但不积跬步,无以至千里,没有什么事情是一蹴而就的,我们要学会沉下心来,一起努力,一起期待未来!!
今天的笔记主要是围绕认识基本数据类型:了解C语言的总体数据类型,了解整型、字符型、浮点型数据类型其中每类的所占字节、最大小值。
目录
数据类型大纲
从整理出的数据类型大纲来看,C语言共有9种数据类型,而我们在学习过程中较为常用的是基本数据类型。其中基本数据类型又分为:整型、字符型、实型(又称浮点型)以及枚举型,我们接下来可以使用sizeof关键词对基本类型的前三类进行一一解析:
整型
有符号整型
#include "stdio.h" #include "limits.h" #include "float.h" void main() { printf("short所占字节%d\n", sizeof(short)); printf("数值范围为 %hd~%hd\n", SHRT_MIN, SHRT_MAX); //--------------------------------- printf("int所占字节%d\n", sizeof(int)); printf("数值范围为 %d~%d\n", INT_MIN, INT_MAX); //--------------------------------- printf("long所占字节%d\n", sizeof(long)); printf("数值范围为 %ld~%ld\n", LONG_MIN, LONG_MAX); //--------------------------------- printf("long long所占字节%d\n", sizeof(long long)); printf("数值范围为 %lld~%lld\n",LLONG_MIN , LLONG_MAX); }
我们可以通过上述代码对有符号整型的所占字节,数值范围进行模块化运算。
有符号整型包含正负值,常理需要加上signed标识符,但是通常可以省略。
short 短整型
数据所占字节为 2 ,数据的数值范围为 -32768 ~ 32767,打印类型为 %hd。int 整型
数据所占字节为 4 ,数据的数值范围为 -2147483648 ~ 2147483647,打印类型为 %d。
long 长整型
数据所占字节为 4 ,数据的数值范围为 -2147483648 ~ 2147483647,打印类型为 %ld。
long long 加长整型
数据所占字节为 8 ,数据的数值范围为 -2^(63) ~ 2^(63)-1,打印类型为 %lld。
无符号整型
#include "stdio.h" #include "limits.h" #include "float.h" void main() { printf("unsigned short所占字节%d\n", sizeof(unsigned short)); printf("数值范围为 0~%hu\n", USHRT_MAX); //--------------------------------- printf("unsigned int所占字节%d\n", sizeof(unsigned int)); printf("数值范围为 0~%u\n", UINT_MAX); //--------------------------------- printf("unsigned long所占字节%d\n", sizeof(unsigned long)); printf("数值范围为 0~%lu\n", ULONG_MAX); //--------------------------------- printf("unsigned long long所占字节%d\n", sizeof(unsigned long long)); printf("数值范围为 0~%llu\n", ULLONG_MAX); }
我们可以通过上述代码对无符号整型的所占字节,数值范围进行模块化运算。
无符号整型只包含正值,必需加上unsigned标识符,不可以省略。
unsigned short 短整型
数据所占字节为 2 ,数据的数值范围为 0~65535,打印类型为 %hu。
unsigned int 整型
数据所占字节为 4 ,数据的数值范围为 0~4294967295,打印类型为 %u。
unsigned long 长整型
数据所占字节为 4 ,数据的数值范围为 0~4294967295,打印类型为 %lu。
unsigned long long 加长整型
数据所占字节为 4 ,数据的数值范围为 0~2^63-1,打印类型为 %llu。
字符型
有符号及无符号字符型
#include "stdio.h" #include "limits.h" #include "float.h" void main() { printf("char所占字节%d\n", sizeof(char)); printf("数值范围为 %hd~%hd\n", CHAR_MIN, CHAR_MAX); //====================================== printf("unsigned char所占字节%d\n", sizeof(unsigned char)); printf("数值范围为 0~%hd\n", UCHAR_MAX); }
我们可以通过上述代码对有符号及无符号字符型的所占字节,数值范围进行模块化运算。
字符型一个字符占一个字节,变量声明是需要 '' 进行包络,可对应该字符的 ASCII 编码再放到变量的存储单元中去。
char 类型
数据所占字节为 1 ,数据的数值范围为 -128~127,打印类型为 %c。
unsigned char 类型
数据所占字节为 1 ,数据的数值范围为 0~255,打印类型为 %c。
浮点型
单精度及双精度浮点型
#include "stdio.h" #include "limits.h" #include "float.h" void main() { printf("float所占字节%d\n", sizeof(float)); printf("数值范围为 %e~%e\n", FLT_MIN, FLT_MAX); //====================================== printf("double所占字节%d\n", sizeof(double)); printf("数值范围为 %e~%e\n", DBL_MIN, DBL_MAX); }
我们可以通过上述代码对单精度及双精度浮点型字符型的所占字节,数值范围进行模块化运算。
float 单精度型
数据所占字节为 4 ,数据的数值范围为 1.175494e-38~3.402823e+38,数据的精度可到小数点后7位,打印类型为 %f。
double 双精度型
数据所占字节为 8 ,数据的数值范围为 2.225074e-308~1.797693e+308,数据的精度可到小数点后16位,打印类型为 %lf。