c语言 char / short / int中能存储多大的数据?

2023-11-16

我们都知道char能存储的数据范围是-128 ~ 127,unsigned chard 范围是0 ~ 255。short能存储的数据范围是-32768 ~ 32767,unsigned short 范围是0 ~ 65535。int能存储的数据范围是-2147483648 ~ 2147483647,unsigned int的范围是0 ~ 4294967295。但为什么是这样的范围,我们从没有深究过,这篇博文将对此进行深入的讲解,希望能加深你对这些类型范围的了解。

1. char类型讲解

1.1 有符号char

char的大小为一个字节,八个比特位,我们就从0开始,那char的二进制补码先是
00000000 接着是
00000001

01000000

01111111
这时的char是255,再加1结果是
10000000 - 这个数是负数,首先它是不能计算的,我们不用转换它成原码,计算机直接把它解析成-128
10000001 - 这个数转换成原码是11111111,十进制是-127
10000010 - -126

11111111 - 原码是-1,再加1得到的就是0了。综上我们可以用一个圆来表示char能存储的数值

不理解没关系,我画个图来说明char从0开始不断地加1这个过程

在这里插入图片描述

在这里插入图片描述

这里我们可以得出结论,char从0开始不断地加1,会陷入循环,
从0 … 127,-128,-127…-2,-1,0 … 127,-128,-127…就像上面的圆一样

因此得到结论signed char中能存储的数据范围是-128 ~ 127,我们可以通过limits.h文件验证我们的说法在这里插入图片描述


来看一个程序


int main()
{
	char a[1000];
	int i = 0;
	for (i = 0; i < 1000; i++)
	{
		a[i] = -1 - i;
	}
	printf("%d",strlen(a));
	return 0;
}

这是上篇博客中提到的一题,现在对这题是不是有更深的理解了?

字符数组a从-1到-128,再减1得到127,127到1,最后到0。字符串遇到\0(\0的ASCII码值是0)停止,所以字符串长度是-1 ~ -128,1 ~ 127,之间的数字个数,求出的长度就是255。

在这里插入图片描述

1.2 无符号char

在这里插入图片描述
在这里插入图片描述

对最后的11111111加1得到0,又循环回去了。

所以我们得出结论:unsigned char能存储的数据范围是0 ~ 255。在limits.h文件中验证
在这里插入图片描述
在这里插入图片描述
两个f就是255,也是二进制的8个1。


再来看一道题


int main()
{
	unsigned char i = 0;

	for (i = 0; i <= 255; i++)
	{
		printf("hello world\n");
	}
	return 0;
}

同样也是上篇博客中提到的题目,正是因为对unsigned char不断地加1会陷入0~255再到0 ~ 255这样的循环,使得i总是满足i <= 255这个条件,所以hello world会不断地在屏幕上输出。

2.short类型讲解

2.1 有符号short

在这里插入图片描述
对short的0不断加1,这个过程和char一样,只是因为short有16个bit位,所以short最大的数是01111111 11111111,转换成十进制是32767,再加1是10000000 00000000,计算机直接把它解析成-32768…

后续的过程和char一样,我就不再赘述。由此我们得出结论,signed short能存储的数据范围是-32768 ~ 32767。

在limits.h文件中,定义short的范围如下
在这里插入图片描述

2.2 无符号short

在这里插入图片描述

由于是无符号数,不用单独解析最高位的符号位,直接把二进制序列转换成十进制,当16位bit都是1时,十进制就是在这里插入图片描述
所以unsigned char能存储的数据范围是0 ~ 65535,在limits.h文件中是十六进制的f f f f,根据上图的HEX一行,也能验证我们的说法是对的。
在这里插入图片描述

3. int类型讲解

3.1 有符号int

在这里插入图片描述

最大值是2^31 - 1,最小值是- 2 ^ 31。在limits.h文件中验证一下。在这里插入图片描述

3.2 无符号int

在这里插入图片描述
最大值是2^32 - 1,二进制的32个1,在这里插入图片描述
在limits.h文件中验证在这里插入图片描述
8个f,从计算机的HEX中看出,我们的说法是正确的。


好了,相信你对char,short,int三中基本类型存储范围的了解已经很透彻了,希望这篇博客能对你有帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

c语言 char / short / int中能存储多大的数据? 的相关文章

  • 【计算机毕业设计】北工国际健身俱乐部

    本系统为会员而设计制作北工国际健身俱乐部 旨在实现北工国际健身俱乐部智能化 现代化管理 本北工国际健身俱乐部管理自动化系统的开发和研制的最终目的是将北工国际健身俱乐部的运作模式从手工记录数据转变为网络信息查询管理 从而为现代管理人员的使用提
  • 【计算机毕业设计】OA公文发文管理系统_xtv98

    近年来 人们的生活方式以网络为主题不断进化 OA公文发文管理就是其中的一部分 现在 无论是大型的还是小型的网站 都随处可见 不知不觉中已经成为我们生活中不可或缺的存在 随着社会的发展 除了对系统的需求外 我们还要促进经济发展 提高工作效率
  • 华为OD机试 Java 【计算文件大小】

    题目 一个电脑文件夹系统 每个文件夹里都有一些文件和可能还有其他子文件夹 给定所有文件夹的大小和子文件夹列表 你的任务是找出某一个文件夹及其所有子文件夹里的文件总大小 输入格式 首行有两个数字 文件夹的总数M和你要查询的文件夹ID N 之后
  • 【无迹卡尔曼滤波】不确定和间接测量的非线性动力系统识别研究(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码及文章
  • 华为OD机试2024年最新题库(Java)

    我是一名软件开发培训机构老师 我的学生已经有上百人通过了华为OD机试 学生们每次考完试 会把题目拿出来一起交流分享 重要 2024年1月 5月 考的都是OD统一考试 C卷 题库已经整理好了 命中率95 以上 这个专栏使用 Java 解法 问
  • Android Navigation的四大要点你都知道吗?

    在JetPack中有一个组件是Navigation 顾名思义它是一个页面导航组件 相对于其他的第三方导航 不同的是它是专门为Fragment的页面管理所设计的 它对于单个Activity的App来说非常有用 因为以一个Activity为架构
  • 面试官随便问几个问题就知道你究竟做没做过微信支付宝支付

    面试官随便问几个问题就知道你究竟做没做过微信支付宝支付 你知道直连模式和服务商模式吗 网上的课程一般给你演示的都是直连模式 而企业中有不少是申请成为了服务商 因为里面有佣金提成 我粗俗地解释 直连模式 就是说你是一个会做生意的老板 自己会搞
  • Hutool改变我们的coding方式(二)

    Hutool改变我们的coding方式 Hutool 简介 Hutool如何改变我们的coding方式 文档 安装 Maven
  • 最新整理Java面试八股文,大厂必备神器

    在看这篇文章之前 我想我们需要先搞明白八股文是什么 明清科举考试的一种文体 也称制义 制艺 时文 八比文 八股文章就四书五经取题 内容必须用古人的语气 绝对不允许自由发挥 而句子的长短 字的繁简 声调高低等也都要相对成文 字数也有限制 八股
  • Python 文件的复制重命名以及xlsx文件中表格分开保存

    1 需要的头文件 import shutil import os import openpyxl 2 复制文件以及重命名 直接使用shutil库复制 重命名 移动即可 函数封装示例 source path 为全局变量被复制文件路径 dest
  • 面试官:分库分表后如何生成全局ID?

    分库分表后就不能使用自增 ID 来作为表的主键了 因为数据库自增 ID 只适用于单机环境 但如果是分布式环境 是将数据库进行分库 分表或数据库分片等操作时 那么数据库自增 ID 就会生成重复 ID 从而导致业务查询上的问题 所以此时 可以使
  • 【卡尔曼滤波】具有梯度流的一类系统的扩散映射卡尔曼滤波器研究(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码 数据 文章
  • 【固定翼飞行器】用于计算固定翼飞机空气动力学的紧凑涡旋格方法研究(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码实现
  • 详解toLowerCase(判断字符串相等)

    一 toLowerCase 函数简介 toLowerCase 是一个在多个编程语言中都存在的字符串方法 它的作用是将字符串中的所有大写字母转换为对应的小写字母 常用于文本处理 搜索和比较等情况 以确保字符串的一致性和非大小写敏感的操作 二
  • MongoDB - 整合 SpringBoot 操作全流程

    目录 一 MongoDB 整合 SpringBoot 1 1 引入依赖 1 2 配置文件 1 3 集合操作 1 4 相关注解 1 5 文档操作 1 5 1 查询 1 5 2 更新 1 5 3 删除 一 MongoDB 整合 SpringBo
  • 【路径规划】基于改进遗传算法求解机器人栅格地图路径规划(Matlab实现实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码实现
  • 2024年华为OD机试真题-查找接口成功率最优时间段-Python-OD统一考试(C卷)

    题目描述 服务之间交换的接口成功率作为服务调用关键质量特性 某个时间段内的接口失败率使用一个数组表示 数组中每个元素都是单位时间内失败率数值 数组中的数值为0 100的整数 给定一个数值 minAverageLost 表示某个时间段内平均失
  • 【C#】基础巩固

    最近写代码的时候各种灵感勃发 有了灵感 就该实现了 可是 实现起来有些不流畅 总是有这样 那样的卡壳 总结下来发现了几个问题 1 C 基础内容不是特别牢靠 理解的不到位 导致自己想出来了一些内容 但是无法使用正确的C 代码实现 导致灵感无法
  • Java进阶之旅第七天

    Java进阶之旅第七天 文章目录 Java进阶之旅第七天 方法引用 介绍 代码展示 结果 方法引用的分类
  • 计算机Java项目|java游戏账号交易系统

    作者简介 Java领域优质创作者 CSDN博客专家 CSDN内容合伙人 掘金特邀作者 阿里云博客专家 51CTO特邀作者 多年架构师设计经验 腾讯课堂常驻讲师 主要内容 Java项目 Python项目 前端项目 人工智能与大数据 简历模板

随机推荐

  • URI中的 “//” 有什么用

    前言 很多时候互联网很多东西都是很有意思的 比如 http 这个双斜杠 解释这个东西就需要翻墙去国外了 入口 在2009年10月 BBC中的一篇新闻讲述了 的用途 截图如下所示 文章翻译 互联网地址开头的大幅删减长期以来一直困扰着网民 现在
  • JavaScript奇淫技巧:反调试

    JavaScript奇淫技巧 反调试 本文 将分享几种JS代码反调试技巧 目标是 实现防止他人调试 动态分析自己的代码 检测调试 方法一 用console log检测 代码 var c new RegExp 1 c toString fun
  • OpenCV+python实现摄像头简单手势识别--进度条控制亮度

    文章目录 前言 一 整体框架 二 使用步骤 1 引入库 2 第一步 打开摄像头 3 第二步 设置回调函数 4 第三步 肤色检测 5 第四步 进行高斯滤波 6 第五步 边缘轮廓检测 7 第六步 求出手势的凹凸点 8 第七步 利用凹凸点个数判断
  • c++数组排序的五种方法

    方法一 冒泡排序 比较相邻的元素 如果第一个比第二个大 就交换他们两个 对每一对相邻元素做同样的工作 执行完毕后 找到第一个最大值 重复以上的步骤 每次比较次数 1 直到不需要比较 示例 对数组4 2 8 0 5 7 1 3 9 进行排序
  • 2023华为od机试 Java【矩阵的最大值和最小值】

    题目 现在给你一个N M矩阵 M表示有M个矩阵 你的目标是找出M个该矩阵中每列元素的最大值 然后输出这M个值中的最小值 示例1 输入 1 2 3 4 输出 3 代码 import java util Scanner public class
  • 人工智能必备数学基础-目录

    数学基础学习笔记 为了学习人工智能 需要先打好数学基础 这里是为学习人工智能而准备的数学基础 线性代数 1 1 矩阵及其运算 1 1 1 矩阵基本概念及意义 1 1 2 基本运算 1 1 3 矩阵的迹 1 1 4 矩阵的转置 1 1 5 对
  • linux中文件权限

    linux中一切都是文件 这个设计秒不可言阿 在linux系统中每一个文件都有 三组权限 所有者 所属组 其它用户 文件类型 符号 作用 普通文件 d 目录文件 l 链接文件 b 块设备文件 c 字符设备文件 p 管道文件 文件权限 ls
  • 设计模式-原型模式

    文章目录 前言 什么是原型模式 Java中的原型模式 使用场景 优缺点 结论 前言 在软件开发中 设计模式是一种重要的思想和方法 用于解决常见的编程问题 原型模式是其中之一 它允许我们通过复制现有对象来创建新对象 而无需依赖具体类的构造函数
  • Java System.out.println()的简单理解

    前言 想必很多人对System out println 只是简单的进行运用 并未深入了解其背后的原理 例如当问及当中的out是什么 很多人可能一时答不上来 又比如问道println 方法属于那个类 你可能不假思索的答System类 可结果真
  • PostgreSQL(一)Windows安装

    目录 一 下载 二 安装PostgreSQL 三 安装StackBuilder 四 打开PostgreSQL管理工具pgAdmin 五 打开命令行 一 下载 下载地址 https www enterprisedb com downloads
  • openstack热迁移机制分析(libvirt热迁移模型、nova热迁移控制逻辑、调试方法)

    前段时间在解决大内存热迁移失败的时候 查阅了下openstack热迁移相关知识 有了一些记录跟大家分享下 以基于L版openstack qemu kvm 跟大家分享下API库libvirt的热迁移机制和nova控制逻辑的一些记录 注 这篇博
  • Jquery获取select选中的文本与值

    Jquery获取select选中的文本与值 jquery获取select选择的文本与值 获取select 获取select 选中的 text ddlregtype find option selected text 获取select选中的
  • Python3 unittest学习

    Python3 unittest学习 unittest单元测试框架 基本结构 执行测试 普通方式执行 通过unittest模块执行 跳过测试与预期失败 使用子测试区分测试迭代 类与函数 class unittest TestCase met
  • Linux内核中进程的初始化

    分析start kernel时应该会注意到Linux内核0号进程的初始化 见init main c set task stack end magic init task 其中 init task为第一个进程 0号进程 的进程描述符结构体变量
  • com.aspose.diagram.afr: Unexcepted eof.

    背景 SpringBoot项目 使用aspose diagram操作Visio 并且使用了模具文件 并将其放在了resource下面 代码 读取resource下面的文件 这种方法在linux环境上面依然可以使用 Resource reso
  • C#访问SQLite数据库,实现数据的增删改查功能

    说明 本文的代码是基于Winform中举例的 经过实测可用 1 封装Sqlite操作类 sqLiteHelper using System using System Collections Generic using System Linq
  • Arduino调节反馈式比例线性组件

    当您需要了解执行器的确切位置时 就需要光学反馈系列 它功能强大 可靠的执行器带有内置的光学传感器 可在您需要时提供反馈 光反馈没有内置控制器 但确实提供了单相脉冲作为位置反馈信号 可以将其输入到诸如Arduino之类的外部控制器中 多个线性
  • Selenium成长之路-24 frame(iframe)的处理

    今天来了解一下 frame的标签 frame标签有三种 frameset iframe frame gt gt gt frameset就当做一个普通的标签使用 gt gt gt 而frame与iframe就有点特殊了 所以接下来的时间 我们
  • 肖磊:不了解人类货币史,就别拿数字货币乱吹牛

    在知乎上 有一个并不起眼的问题 有人问 如果世界上只有一种货币 且总量一定 这个世界会发生什么 其中一个回答是这样的 假如一个村子只给他一亿流通币 且只准以这种流通币交易 会发生什么情况呢 首先你会感觉物价便宜了 因为在社会物资增加 而货币
  • c语言 char / short / int中能存储多大的数据?

    我们都知道char能存储的数据范围是 128 127 unsigned chard 范围是0 255 short能存储的数据范围是 32768 32767 unsigned short 范围是0 65535 int能存储的数据范围是 214