尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

C语言梦开始的地方2:数据类型

C语言梦开始的地方2:数据类型 文章目录C语言梦开始的地方2数据类型数据类型sizeof数据类型取值范围变量的创建全局变量和局部变量C语言梦开始的地方2数据类型上一章节我们说到了C语言的发展史C语言的组成部分C语言的三大结构和C语言的关键字。本章节我们深入了解C语言的数据类型数据类型C语言提供了丰富的数据类型来描述生活中的各种数据。整数类型来描述整数字符类型来描述字符浮点类型来描述小数在上一章节我们说到关键字时给了表格但是没有展开部分关键字说一说数据类型可以分成两类一类是内置类型就是我们刚才说的整数类型字符类型和浮点类型这种的一类是自定义类型比如数组结构体这种。自定义类型我们后续在进行了解本章节我们了解内置类型即可数据类型说明大小(字节)取值范围char字符型1-128 ~ 127unsigned char无符号字符型10 ~ 255short短整型2-32768 ~ 32767unsigned short无符号短整型20 ~ 65535int整型4-2147483648 ~ 2147483647unsigned int无符号整型40 ~ 4294967295long长整型4/8取决于平台unsigned long无符号长整型4/8取决于平台long long长长整型8-9223372036854775808 ~ 9223372036854775807unsigned long long无符号长长整型80 ~ 18446744073709551615float单精度浮点型4约 ±3.4e-38 ~ ±3.4e38double双精度浮点型8约 ±1.7e-308 ~ ±1.7e308long double长双精度浮点型8/12/16精度更高void空类型0无值_Bool布尔型1true / false在C语言中内置类型也分两种一种是无符号的一种是有符号的他们的区别我们可以简单了解无符号类型是正数有符号有正数有负数。使用场景当我们要存储的数据一定是正数且数值超过了当前有符号类型的上限但数值又不大改用更大的类型会浪费空间时就可以使用无符号类型。原因是有符号类型需要用最高位作为符号位来标记正负占用 1 位空间而无符号类型没有符号位所有位都用来存数值所以无符号类型的正数范围更大。我们看表格的时候会发现有的类型的大小是浮动的这是因为这些类型会跟着系统的不同和编译器的不同产生变化有的时候int和unsigned int存不下时有的人会用long但是有可能int和long在当前编译器的大小是一样的C语言为了让大家避免这种情况就给出一个关键字sizeof下面就让我们一起了解sizeofsizeofsizeof 是一个关键字也是操作符专门是用来计算sizeof的操作符数的类型长度的单位是字节。sizeof 操作符的操作数可以是类型也可是变量或者表达式.sizeof( 类型 )sizeof 表达式#includestdio.hintmain(){// 基本类型大小printf(char : %zu 字节\n,sizeof(char));printf(short : %zu 字节\n,sizeof(short));printf(int : %zu 字节\n,sizeof(int));printf(long : %zu 字节\n,sizeof(long));printf(long long : %zu 字节\n,sizeof(longlong));printf(float : %zu 字节\n,sizeof(float));printf(double : %zu 字节\n,sizeof(double));// 字符串数组含 \0printf(sizeof(\abc\) %zu\n,sizeof(abc));// 对表达式求 sizeof 不会执行它inta5;size_tssizeof(a);// a 不会自增printf(a %d, sizeof(a) %zu\n,a,s);return0;}无符号同理数据类型取值范围上面我们了解了C语言的数据类型的种类无符号和有符号的区别也通过表格的方式展示了各种类型的取值范围但是如果让我们自己手动输入这些取值范围的太麻烦了有的时候也容易输错那么C语言提供了对应解决方法了吗提供了对应的常量整数类型在limits.h这个头文件里面浮点类型在float.h头文件里面宏含义SCHAR_MINsigned char 的最小值SCHAR_MAXsigned char 的最大值SHRT_MINshort 的最小值SHRT_MAXshort 的最大值INT_MINint 的最小值INT_MAXint 的最大值LONG_MINlong 的最小值LONG_MAXlong 的最大值LLONG_MINlong long 的最小值LLONG_MAXlong long 的最大值UCHAR_MAXunsigned char 的最大值USHRT_MAXunsigned short 的最大值UINT_MAXunsigned int 的最大值ULONG_MAXunsigned long 的最大值ULLONG_MAXunsigned long long 的最大值变量的创建data_type name; | | | | 数据类型 变量名变量是程序中用来存放数据的容器使用前必须先创建定义。创建一个变量需要三要素类型 名字 初始值初始值可省略。变量名的命名规则只能由字母、数字、下划线组成不能以数字开头不能和 C 语言关键字重名如 int、for 等严格区分大小写age 和 Age 是两个不同的变量命名最好见名知意比如用 count 而不是 a。#includestdio.hintmain(){// 定义类型 名字未初始化intage;doubleheight;charsex;// 定义并初始化类型 名字 初值intcount10;doublepi3.14;chargradeA;// 先定义后赋值age18;height1.75;sexM;printf(age %d\n,age);printf(pi %.2f\n,pi);printf(grade %c\n,grade);return0;}全局变量和局部变量根据变量定义的位置C 语言把变量分为局部变量和全局变量。局部变量定义在函数内部花括号内的变量。全局变量定义在所有函数之外的变量。局部变量全局变量定义位置函数内部代码块内所有函数外部作用域所在代码块从定义到程序结束生命周期函数执行期间函数结束自动销毁整个程序运行期间默认初值不确定垃圾值0使用场景临时数据多函数共享数据在同时使用全局变量和局部变量我们要注意一点就是如果全局变量和局部变量的变量一致时那么它是会用全局变量的值函数局部变量的值呢#includestdio.hintn1000;intmain(){intn10;printf(%d\n,n);return0;}当程序运行后我们会发现是运行的局部变量所以我们可以得出一个结论当全局变量和局部变量的变量名相同时优先使用局部变量注意局部变量只在自己所在代码块中生效。看下面代码他们的输出结果是不一样的就是因为局部变量只在自己所在代码块中生效。//代码A#includestdio.hintmain(){intn10;{intn1000;printf(%d\n,n);}return0;}// 代码B#includestdio.hintmain(){intn10;{intn1000;}printf(%d\n,n);return0;}本章我们深入了解了 C 语言的内置数据类型认识了有符号和无符号的区别学会了用 sizeof 计算类型的大小知道了通过 limits.h 和 float.h 中的宏获取取值范围也掌握了变量的创建以及全局变量和局部变量的区别。数据类型和变量是 C 语言大厦的砖块打好这个基础下一章我们将一起学习对数据进行加工的工具——操作符。完
返回列表