C语言中的数据存储方式

article/2025/9/16 5:14:21

这篇文章主要是关于C语言中整形、字符型的变量是如何存储整形数字、是如何、何时发生整形提升,以及还有打印方式的不同打印的数字也不同的知识补充。



int与unsigned int:

int是在内存中是4个字节,也就是8*4=32个比特位的存储方式,是带正负号的整形。
unsigned int在内存中也是占4个字节,32个比特位,但是它是不带正负号的整形。


所以当一个负数存放到unsigned int类型的变量里面时:
负数在二进制存储的时候第一个数字是1,当以补码的形式将负数存储到unsigned int的时候,数字会变得很大。

例如:
我将-1赋值给unsigned int类型的变量i上,如果按照赋值给int类型的方式去理解的话,打印出来的i应该是-1,但是其实赋值得到的数是4294967295。

从调试的时候监视去看i的值:

从内存存储的时候去看i在内存中的存储:

ffffffff是十六进制的数,换做为二进制就是11111111111111111111111111111111。
所以将-1赋值给unsigned int类型的时候就是直接将补码当作原码的。

 
所以当int类型和unsigned类型的数据一起计算时,根据算数转换,int类型会变成unsigned类型去进行计算,然后将补码直接当作原码存储到unsigned int类型变量中。



char与unsigned char
char和unsigned char都是在内存中占1个字节,所以占8个比特位,根据其只占8个比特位,所以数据的存储也受到限制。

当赋值给char类型的时候,是带有正负号的字符型变量,因此第一个比特位跟int类型一样作为符号位。
当赋值给unsigned char类型的时候,是不带正负号的,因此第一个比特位不作为符号位。
所以当char和unsigned char类型的变量一起计算的时候,与int、unsigned int一样的,char会变成unsigned  char进行计算。
具体存储方式可以参考以上的int与unsigned int的。

由于只占8个比特位,且char类型是带正负号的,第一个比特位要作为符号位,所以char类型的数字存储的时候范围是-128-127。
而unsigned char类型的变量范围是0-255。

所以当赋值的数字超过该范围,会发生截断,例如将数字256赋值给unsigned char类型变量,此时256有9位比特位,也就是100000000,因为只存储8位,就发生截断,只取后8位赋值给变量,也就是说最后截断后的二进制是:00000000,赋值给变量得到的值是0。



当char、unsigned char、int、unsigned int类型的变量进行计算
算数转换关系是:
char < unsigned char < int < unsigned int
也就是说当他们四个或者其中几个类型变量共同出现在计算式的时候,他们会发生从左到右的算术转换。


1:当char与int一起计算时:将数字赋值给char类型变量时,先变成补码,如果要发生截断则先截断,再赋值给char类型变量,然后遇到int的时候发生整形提升,如果是负数则向左补1,如果是正数则补0,一直补到第32位。

2:当unsigned char与int一起计算时,将数字赋值给unsigned char类型变量时,同样先变成补码再赋值,然后如果要截断就发生截断,遇到int的时候发生整形提升,但是这里向左补的数字只能是0,补到第32位。因为unsigned char是无符号的数字。





当用%d进行打印和用%u进行打印的区别:
%d打印时:
是打印带符号的数字,如果是像上面将-1赋值给unsigned int类型的变量i,如果用%d打印的话,i的原码应该是11111111111111111111111111111111,而因为%d打印是带符号的打印方式,所以会将i视作负数,因此按照负数的方式打印的话,会将该11111111111111111111111111111111变成10000000000000000000000000000001进行打印,也就是-1。

%u打印时:是打印不带符号的数字,因此当变量符号位是否是1,也就是说打印的数字是否是负数还是正数,都会被当作无符号的数字进行打印。例如将-1赋值给int类型,int类型变量可以存储带正负号的数字,正常情况下打印出来是-1,但是由于是%u打印,-1的补码是11111111111111111111111111111111,就是按照该补码视作原码进行打印:

 


 




 


http://chatgpt.dhexx.cn/article/mwT6A0Lw.shtml

相关文章

深入理解BMP图片数据存储方式

说明: 以下这些是本人自己总结出来的&#xff0c;因为自己在图像数据的存储方面总是模糊不清&#xff0c;这样是不利于开发的&#xff0c;只有知道底层原理才能解决任何问题&#xff0c;通过下面的知识&#xff0c;你就可以触类旁通&#xff0c;解决bmp图片在lcd上的任意显示问…

js的一些数据存储方式

一、本地存储 随着.互联网的快速发展,基于网页的应用越来越普遍,同时也变的越来越复杂,为了满足各种各样的需求,会经常性在本地存储大量的数据, HTML 5规范提出了相关解决方案。 本地存储特性 1、数据存储在用户浏览器中。 2、设置、读取方便、甚至页面刷新不失数据。 3、…

html存储数据的方法,数据存储方式有哪些

数据存储方式&#xff1a;1、顺序存储方法&#xff0c;结点间的逻辑关系由存储单元的邻接关系来体现。2、链接存储方法&#xff0c;结点间的逻辑关系由附加的指针字段表示。3、索引存储方法。4、散列存储方法&#xff0c;根据结点的关键字直接计算出该结点的存储地址。 本教程操…

android常用的存储方式,Android 常见数据存储方式

Android 常见数据存储方式有以下三种:1.使用SharedPreferences存储数据:其本质就是一个xml文件,可以保存字符串、布尔值、基础数据、集合等数据。常用于存储较简单的参数设置。 2.File文件存储数据:即常说的文件(I/O)存储方法,常用语存储大数量的数据。分为:Android系统自…

数据分析中常见的存储方式

点击上方“大话coding”&#xff0c;选择“星标”公众号 重磅干货&#xff0c;第一时间送达 大家好&#xff0c;我是小轩 这两天整理了在数据分析中常见的5种存储格式 内容比较多&#xff0c;只是简要整理&#xff0c;仅供大家学习和选择 后面会对使用到的数据存储方式进行详细…

pip安装git

解决&#xff1a;Cannot find command ‘git’ - do you have ‘git’ installed and in your PATH?和系统找不到指定的文件。 while executing command git http:.// C:\Users\HASEE>pip install githttps://github.com/philferriere/cocoapi.git#subdirectoryPythonAPI C…

用pip安装pytorch

我这里用的名字叫 PyTorch 以下操作在Anaconda Prompt中操作 一、激活虚拟环境 conda activate PyTorch二、安装这三个whl 每一个的安装命令如下&#xff1a; pip install 【地址文件名】如果这里的【地址文件名】不知道如何写的话&#xff0c;选中whl文件&#xff0c;右键选…

pip 安装第三方库

pip 安装第三方库 1. 默认安装最新版本 pip install [package_name] 2. 指定模板版本安装 pip install [package_name]x.x.x 3. 指定最低版本安装 pip install [package_name]>x.x.x 4. 指定镜像源服务器地址安装 pip --proxy http://: install 5. 查看安装包列表 …

使用pip安装PyTorch

以python语言为例&#xff0c;在使用 "import torch" 时报错&#xff0c;发现根本没有安装PyTorch&#xff0c;赶紧百度PyTorch安装&#xff0c;出来一堆教程&#xff0c;大多都是需要conda啥啥啥的&#xff0c;小白(比如我)看的一脸懵逼(大佬们别笑了)。 其实&…

pip安装pytorch的方法

pip安装pytorch 1 登录pytorch官网生成安装链接2 执行命令3 检验是否安装成功4 说明 在网上看到的比较多的方法是用Anaconda安装&#xff0c;这里介绍用pip安装的方法。 1 登录pytorch官网生成安装链接 pytorch官网网址&#xff1a; https://pytorch.org/get-started/locall…

Pytorch(pip安装示例)

00、简单介绍&#xff1a; PyTorch是一个基于Torch的Python开源机器学习库&#xff0c;用于自然语言处理等应用程序。 PyTorch提供的两个高级功能&#xff1a; GPU加速张量计算&#xff08;如Numpy&#xff09;动态神经网络&#xff0c;可自动求导&#xff0c;很灵活 1、我…

pip安装详解

pip是python的包管理工具,python2.7/python3.4以上的版本都已经集成了该工具,我们可以用 pip --version命令确认是否安装。如果未安装pip的,请往下看。 下载 进入https://pypi.org/project/pip/选择红框中的文件下载 图 windows下安装 下载完成后解压得到 我们用CMD进…

pip 安装jupyter notebook

一、打开cmd 快捷键winxa 二、输入 pip install jupyter 等待下载完成&#xff08;一两分钟&#xff09; 三、配置jupyter notebook打开路径 jupyter notebook --generate-config 四、找到文件所在位置 就是上图to的位置&#xff0c;查找 c.NotebookApp.notebook_dir 键…

pip安装及matplotlib安装

1、pip安装 首先&#xff0c;找到安装python的文件夹&#xff0c;接着打开文件夹里的Scripts文件夹&#xff0c;打开Scripts文件夹并复制该路径。如下图&#xff1a; 右键单机此电脑图标&#xff0c;点击属性&#xff0c;找到高级系统设置。如下图&#xff1a; 点击其中的环境…

pip安装mediapipe报错

1.刚开始安装报错 解决一&#xff1a; 上网搜索后&#xff0c;有博主说是镜像错误的原因&#xff0c;可以用阿里或其他镜像下载&#xff0c;我运行后还报上面的错误 具体解决办法可以看这个博主的https://blog.csdn.net/qq591840685/article/details/116399374 2.然后还有个…

pip安装python第三方库的四种方法

文章目录 一、无镜像安装二、镜像安装三、一劳永逸式镜像安装四、批量安装总结 一、无镜像安装 pip install 库名 打开命令提示符【win r】,输入cmd&#xff0c;在命令提示窗口输入pip install 库名&#xff0c; 再点击回车键【Enter】&#xff0c;就可以安装。当安装成功时&…

pip环境的安装

pip环境的安装配置 注&#xff1a;在进行安装的前提是机器上存在python的环境并能通过cmd命令行进行运行 下载pip的压缩包&#xff0c;并进行解压 在windows系统之中通过cmd命令行的形式将路径移动到pip解压的文件夹的目录之下。 python setup.py install注&#xff1a;set…

pip安装教程 python(针对于Windows系统)

1.什么是pip pip 是 Python 包管理工具&#xff0c;该工具提供了对Python 包的查找、下载、安装、卸载的功能。 目前如果你在 python.org 下载最新版本的安装包&#xff0c;则是已经自带了该工具。 pip 官网&#xff1a;https://pypi.org/project/pip/ 2.判断本机是否安装p…

pip安装教程

pip不是内部或外部命令,也不是可运行的程序或批处理文件 第一步&#xff1a;确定python已安装第二步&#xff1a;下载pip第三步&#xff1a;安装pip可能的问题:python setup.py install没反应 电脑里面没有安装pip&#xff0c;那么 在cmd中运行会提示&#xff1a;pip不是内部或…

新手Python环境配置以及pip安装教程

介于我在安装pip的时候&#xff0c;查资料仍然解决不了自己问题的情况下&#xff0c;统一整理了一下pip安装流程&#xff08;只针对windows用户&#xff09;&#xff1a; 目录 1.介绍 2.检查python和pip的环境 3.下载pip 3.1方法一 3.2方法二 4.pip扩展 1.介绍 pip 是 …