数据类型的介绍1. 数据类型1.1字符型character的缩写char在C语言中表示字符类型char [signed] char //有符号的 [unsigned] char //无符号的1.2 整型integer的缩写int在C语言中表示整型//短整型 short [int] [signed] short [int] unsigned short [int] //整型 int [signed] int unsigned int //⻓整型 long [int] [signed] long [int] unsigned long [int] //更⻓的整型 //C99中引⼊ long long [int] [signed] long long [int] unsigned long long [int]其中使用时signed一般能省略而unsigned一般不能省略1.3浮点型1.float //单精度浮点型 2.double //双精度浮点型 3.long double //精度更高的浮点型1.4 布尔类型使用整数0表示假非零值则表示真——Bool注意布尔类型的使用需要包含头文件stdbool.h取值是true或者false。#includestdio.h #includestdbool.h int main() { _Bool flag true; if(flag) { printf(I love C); } else { printf(I dont like c); } return 0; } //输入的结果肯定是“I love C ”因为if是我们上篇文章中提到的控制语句中的条件判断语句 //if值为非零按顺序执行语句反之执行else语句后面会具体讲到用法1.5 各种数据数据类型的长度数据类型在C语言中不仅仅只是代表存储不同的变量它们也能够创建出不同长度的变量存储数据的范围也有差异。1.5.1 sizeof操作符sizeof是一个关键字同时也是一个操作符能够测算出数据类型的长度单位是字节一字节等于8比特sizeof的操作数既可以是类型也可以是表达式sizeof(类型) sizeof 表达式//当sizeof的操作数是表达式时可以省略括号 //用%zd打印sizeof类型需要注意的是sizeof的表达式不实际参与运算而是根据表达式的类型sizeof的返回类型是 size_t, 因为C语言为了方便移植单独创造了一个类型别名size_t1.5.2 数据类型的长度这就是常见数据数据类型的长度但需要注意的是不用的编译器有些数据内型的大小可能不一致比如vs2022的环境下 int 和 long 的长度都是4个字节而有些编译器 long 的长度则是8个字节需要根据实际情况来进行判断这个图大家可以好好记住前期学习的时候不容易忘记这是一段sizeof的代码大家可以试着计算一下这两条语句输出的结果是什么上文提到 sizeof 中的表达式不会真的被计算所以两个语句输入的结果都是2.第一条语句是因为short的类型长度是2第二条是因为给 s 赋值是2。这就体现了C语言中所谓“截断”原则只要左边的数据类型长度确定后面再大长度也只能截断塞入进去用通俗的话讲就是“是龙给我盘着是虎给我卧着”所以在代码进⾏编译的时候就根据表达式的结果的类型推到并确定了类型的⻓度⽽表达式真要被执⾏却要在程序运⾏期间才会发⽣如果在编译期间已经将sizeof处理掉了所以在运⾏期间就不会执⾏表达式了2.unsigned和signedC语言使用 signed 和 unsigned 关键字修饰字符型和整型类型。signed 关键字表示一个类型带有正负号可以包含负值unsigned 关键字则表示该类型不带有正负号只能表示零和正整数。对于 int 类型默认是带有正负号的也就是说 int 等同于 signed int。由于这是默认情况关键字 signed 一般都省略不写但写了也不算错。// signed 表示有符号的既可以存放正数也可以存放负数 如温度海拔 // unsigned 表示无符号的只能表示0和正整数如身高长度等 //一般来说int 默认为signed类型 int num -- [signed] int //而对于char来说char 本质是一种特殊的整型它默认是unsigned 还是 signed 取决于编译器在我们常用的vs中char的默认类型是signed而上文提到size_t 的返回类型则是无符号整型。当然除了区别符号外整数变量声明为unsigned 的好处是可以让同样长度的内存表示的最大整数值扩大一倍如16位的signed short int的取值范围是-32768——32767而unsigned short int的取值范围是0——65535最大值增加了一倍。下面是vs2022环境中limits.h的定义#define SHRT_MIN (-32768) //有符号16位整型的最⼩值 #define SHRT_MAX 32767 //有符号16位整型的最⼤值 #define USHRT_MAX 0xffff //⽆符号16位整型的最⼤值 #define INT_MIN (-2147483647 - 1) //有符号整型的最⼩值 #define INT_MAX 2147483647 //有符号整型的最⼤值字符类型char的 signed 和unsigned 类型signed char//范围-120——127 unsigned char //范围0——255C语言规定 char 类型默认是否带有正负号有当前的系统决定3.数据类型的取值范围上述的数据类型有很多光整型就有、short、int、long、longlong 四种。每一种数据类型都有自己的取值范围有了丰富的类型我们就可以自由的去选择自己所需要的在适当的场景使用适当的类型如果要查看当前系统上不同类型的极限值limits.h文件中说明了整型类型的取值范围float.h说明了浮点类型的取值范围SCHAR_MIN SCHAR_MAX signed char 的最⼩值和最⼤值。 SHRT_MIN SHRT_MAX short 的最⼩值和最⼤值。 INT_MIN INT_MAX int 的最⼩值和最⼤值。 LONG_MIN LONG_MAX long 的最⼩值和最⼤值。 LLONG_MIN 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 的最⼤值
阅读完成 · 觉得有帮助?