问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

C语言的数据类型(整形int、字符型char、浮点型float、double)

创作时间:
作者:
@小白创作中心

C语言的数据类型(整形int、字符型char、浮点型float、double)

引用
CSDN
1.
https://m.blog.csdn.net/Siri_s12/article/details/143997006

本文将详细介绍C语言中的各种数据类型,包括整形、字符型、浮点型和布尔型等。文章内容详尽,涵盖了数据存储的基本单位、signed和unsigned的区别、各种数据类型的取值范围以及sizeof操作符的使用等。

一、计算机数据存储和处理的基本单位

  • 位(bit):计算机中最小的数据单位,只能表示0或1
  • 字节(Byte):由8位组成,是计算机处理数据的基本单位
  • 千字节(KB, Kilobyte):1KB等于1024字节,因为计算机使用二进制,所以1024(2^10)是1KB
  • 兆字节(MB, Megabyte):1MB等于1024KB,也就是1024 * 1024字节
  • 吉字节(GB, Gigabyte):1GB等于1024MB ,也就是1024 * 1024 * 1024字节
  • 太字节(TB, Terabyte):1TB等于1024GB,也就是1024 * 1024 * 1024* 1024字节
  • 拍字节(PB, Petabyte):1PB等于1024TB
  • 在编程中,字节是定义数据类型和内存分配的基础

二、signed 和 unsigned

  • C 语⾔引⼊ signedunsigned 关键字来修饰 charshortintlong 等整型家族的类型。
  • 使⽤ signed 关键字,表⽰⼀个类型 带有正负号 ,包含负值
  • 使⽤ unsigned 关键字,表⽰该类型 不带有正负号 ,只能表⽰零和正整数

三、 数据类型介绍

  • 类型”指的是相似数据所拥有的共同特征,编译器只有知道了数据的类型,才知道怎么操作数据。
  • 整数类型”用来描述整数,比如 123
  • 字符类型”用来描述字符,比如 'a''b''c'"asdfg"
  • 浮点型类型”用来描述小数,比如 1.13.14

1.字符型

(1)char类型

  • char = character 意思是 字符
  • char 类型通常用于存储 单个字符 ,例如 字母、数字、符号
  • char 类型通常占用 1个字节(8位) ,这个大小是由编译器和机器架构决定。
  • ASCII 编码中,char 可以表示数值范围是从 0 到 127(在8位系统中)

(2) signed char 和 unsigned char

  • signed char 可以表示的数值范围是从 -128 到 127(在8位系统中)
  • char = signed char,在C语言,如果不特别指定, char 默认是有符号的。这意味着如果你只是声明 char 而没有指定 signedunsigned ,它将被当作 signed char
  • unsigned char 可以表示的数值范围是从 0 到 255(在8位系统中)。

2.整型

(1)整形类型的主要区别

  • 有符号(signed) 可以表示正数和负数
  • 无符号(unsigned) 只能表示非负数,因此数值范围的上限是 相应有符号类型的两倍
  • int = signed int,int 类型,默认是带有正负号的,也就是说 int 等同于 signed int ,短整型、整形、长整形、更⻓的整型 也是如此
  • 大小 (具体范围不需要背蛤,了解一下就好):
  • short int 通常为16
  • int 通常为32
  • long int 可能是32位或64
  • long long int 通常为64
    具体的数值范围和位数可能会因为不同的编译器和系统架构而有所不同。

(2)整型

  • 三种:intsigned intunsigned int
  • int = signed int 有符号的整型,是 最常用的 整数类型,通常为32位,数值范围取决于具体的编译器和系统架构,但通常是 -2147483648到2147483647
  • unsigned int 无符号的整型,数值范围为 0到4294967295

(3)短整型

  • 三种:short intsigned short intunsigned short int
  • short int = signed short int 有符号的短整型,可以存储的数值范围较小,通常为 -32768到32767(16位)
  • unsigned short int 无符号的短整型,只能存储 非负数 ,数值范围通常为 0到65535(16位)

(4)长整形

  • 三种:long intsigned long intunsigned long int
  • long int = signed long inunsigned long int 的取值范围确实取决于具体的编译器和系统架构
  • 有符号的长整型(signed long int):
  • 在32位系统中,long int = signed long in 通常是32位的,数值范围通常为 -2147483648到2147483647
  • 在64位系统中,long int = signed long in 可能是64位的,数值范围通常为 -9223372036854775808到9223372036854775807
  • 无符号的长整型(unsigned long int):
  • 在32位系统中,unsigned long int 通常是32位的,数值范围通常 0到4294967295
  • 在64位系统中,unsigned long int 可能是64位的,数值范围通常 0到 18446744073709551615

(5)更长整形

  • 三种(C99中引⼊):long long intsigned long long intunsigned long long int
  • long long int = [signed] long long int 有符号的更长整型,通常为64位,数值范围为 -9223372036854775808到9223372036854775807
  • unsigned long long int 无符号的更长整型,数值范围为 0到18446744073709551615。

3.浮点型

  • float 单精度浮点型
  • double 双精度浮点型
  • long double 精度更长的浮点型

4.布尔类型

(1)在C语言中

  • 0表示假
  • 非0表示真

(2)_Bool

  • 在 C99 中也引⼊了 布尔类型 ,是专⻔表⽰真假的 _Bool
  • 布尔类型的使⽤得包含头⽂件 <stdbool.h>
  • 布尔类型变量的取值是:true 或者 false

(3)_Bool 的其他写法

  • _Bool 写成 bool 这样也没问题
  • #define bool _Bool
  • #define false 0
  • #define true 1

四、各种数据类型的取值范围

1. sizeof 操作符

  • sizeof 是 C 语⾔提供的⼀个 运算符(操作符) ,也是⼀个 关键字

(1) sizeof 的使用形式

  • sizeof 返回某种数据类型或某个值占⽤的字节数量,它的参数可以是 数据类型 的关键字,也可以是 变量名 或 某个具体的值
  • sizeof 不仅仅可以计算内置的类型的⼤⼩,计算 数组 、 ⾃定义类型 的⼤⼩都是可以的
  • 语法:sizeof(type)
  • 整型类型的变量是4个字节,直接使⽤整型类型也是4个字节
  • sizeof 的括号中如果给的不是类型的话,括号可以省略的

(2) 计算各数据类型的长度

  • C语言标准:
  • sizeof(long) >= sizeof(int)
  • sizeof(long double) >= sizeof(double)
    (其他的同理)

(3) sizeof 中的表达式不计算

  • sizeof 在代码进行编译的时候,就 根据表达式的类型确定 了,而表达式的执行要在程序运行期间执行,在编译期间已经将sizeof处理掉了,所以在运行期间就不会执行表达式了

(4) sizeof 的返回类型(这里涉及占位符知识,博主下个帖子会说到)

  • sizeof 运算符的返回值,C 语⾔只规定是⽆符号整数,并没有规定具体的类型,不同的系统中,返回值的类型有可能是 unsigned int ,也有可能是 unsigned long ,甚⾄是 unsigned long long ,对应的 printf() 占位符分别是 %u%lu%llu 。这样不利于程序的可移植性。
  • C 语⾔提供了⼀个解决⽅法,创造了⼀个类型别名 size_t ,⽤来统⼀表⽰ sizeof 的 返回值类型 。该别名定义在 stddef.h 头⽂件(引⼊ stdio.h 时会⾃动引⼊)⾥⾯,对应当前系统的 sizeof 的返回值类型,可能是 unsigned int ,也可能是 unsigned long
  • 注:VS2022中 size_t 是定义在 vcruntime.h 中的,不同的编译器实现上略有差异的。
  • C 语⾔还提供了⼀个常量 SIZE_MAX ,表⽰ size_t 可以表⽰的最⼤整数。所以, size_t 能够表⽰的整数范围为 [0, SIZE_MAX]
  • printf() 有专⻔的占位符 %zd%zu ,⽤来处理 size_t 类型的值。
#include <stdio.h>
int main()
{
    printf("%zd\n", sizeof(int));
    return 0;
}

上⾯代码中,不管 sizeof 返回值的类型是什么, %zd 占位符(或 %zu )都可以正确输出。如果当前系统 不⽀持 %zd%zu ,可使⽤ %u (unsigned int)或 %lu (unsigned long int)代替。

五、在 VS2022 查询数据类型的取值范围

1.查询网站

2.在 limits.h文件 和 float.h文件 查询

(1)查询 limits.h 文件

  • 打开VS2022的 储存磁盘 ,搜索 limits.h

(2)查询 float.h 文件

  • 打开VS2022的 储存磁盘 ,搜索 float.h
© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号