C语言数据溢出

article/2025/5/7 23:35:49

文章目录

  • int 类型
  • char

int 类型

unsigned int num = -1;printf("%u", num);

在这里插入图片描述
解析:
首先在寄存器产生一个负数-1,它在计算机中存储的补码是
32个1,共32个二进制位,当按照赋值号赋给无符号num变量时,符号位变成数值位,所以按照无符号输出为4294967295。

	short int s = 65535;printf("%d", s);

在这里插入图片描述
解析:
寄存器产生一个正数65535,故补码是16个1,当按照赋值号赋给有符号的s变量时,最高位变成符号位,则原码100000…001,所以输出-1。

char

1、char是一个字节,8bit,我们在采用unsigned char的数据类型的情况下

如果我们数据产生溢出(超过2^8)
那么我们最终得到的结果将对2^8(256)取余,如:

unsigned char x = 0xff;
x++;
printf("%d\n",++x);

输出的结果将是1;而不是257.

2、对于signed的整数的溢出,C语言的定义是Undefined Overflow,也就是溢出的数正常显示,并不进行求余的运算。例如:

signed char x = 0xff
printf("%d\n",x);

0xff----> 1111 1111 数在计算机的内存中是以补码的形式存在
所以此数代表的数是:1000 0001也就是-1,所以输出是-1

signed char x = 0x7f
printf("%d\n",++x);

0x7f---->0111 1111 那么该数据先换算成正常的数再执行加1操作(正数的补码是本身),那么加1变成:1000 0000这是-128的补码

但是我们知道在signed char的数据中一共有8位,并且符号占1位,那么有7位数,所以最大是:0111 1111也就是127,所以128是溢出,所以我们直接显示溢出的那个数,那么上面的代码输出就是-128.


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

相关文章

C语言 数据处理

在不使用scanf函数如何对输入的数进行逆序输出呢?首先要得到该数的位数,因为需要在顺序输出里使用。 代码如下: int Getfigure(int n) {int tmp0; //计算循环次数while(n ! 0){n / 10;tmp;}return tmp; //该数的位数 } 其次要清楚该处理…

【Keil 5安装教程】

文章目录 一、安装mdk二、激活mdk三、安装STM32芯片包四、安装C51单片机五、激活C51单片机 一、安装mdk 1、在解压的安装包里,点击运行mdk514.exe文件; 2、在弹出的页面中点击NEXT; 3、打勾I Agree,点击Next; 4、在…

keil3 安装教程

安装前先关闭杀毒软件和360卫士,注意安装路径不能有中文,安装包路径也不要有中文。 1.选中【Keiluvision 3 C51版】压缩包,鼠标右击选择【解压到Keil uvision 3 C51版】。 2.双击打开【Keiluvision 3 C51版】文件夹。 3.选中【KEILc51v802…

keil安装指导

keil arm 5.36下载地址 C51 960a下载地址 注册码 这个自己搜索下载 安装指导 注意: 如果你想C51和ARM一起安装,那就先安装C51再ARM版本的。如果你已经先安装完了ARM的也没关系,安装完C51的再重新安装下ARM的就可以 安装C51 双击你下…

c语言定义函数时形参定义的位置

今天在读Zlib库源码中第三方contrib/minizip文件时,发现一个有意思的东西: 定义函数时,其形参的类型放在函数()后面,()里只放了形参名 虽然这样最终用编译器(如gcc等)编译时是可以通过的,但是…

C语言函数(函数分类,参数,调用,声名及定义)

文章目录 [TOC](文章目录)一、C语言中函数的分类二、函数的参数及调用三、函数的嵌套调用和链式访问四、函数的声名和定义 一、C语言中函数的分类 库函数自定义函数 库函数:在开发的过程中,每个程序员都可能用得到,为了支持可移植性和提高程…

c语言函数定义的语法格式,C语言函数 -C语言函数定义的语法格式

C语言程序是由多个零件组合而成的,而函数就是最主要的组合零件。C语言程序的主体部分就是一个 main( ) 函数,它在 C语言程序中是必不可少的,每一个 C 程序都首先从 main( ) 函数开始执行。 C语言函数是什么 在前面的学习中,我们知…

c语言函数定义范围,c语言定义函数

函数是一段可以重复使用的代码,用来独立地完成某个功能,它可以接收用户传递的数据,也可以不接收。接收用户数据的函数在定义时要指明参数,不接收用户数据的不需要指明,根据这一点可以将函数分为有参函数和无参函数。 将…

C语言-函数(一):函数的定义和调用

函数是一个完成特定工作的独立程序模块,包括库函数和自定义函数两种。例如,scanf()、printf()等这些都为库函数,是由C语言系统提供定义,编程时直接调用即可;还有一种是自己定义的函数,我们主要介绍的就是这…

全网最细!软件测试—bug生命周期

测试人员最本质的工作就是寻找bug,提交bug、验证bug、推进bug的解决,直至软件达到发布的标准,提高软件的质量,及研发的工作效率和质量。 一、什么是bug 软件的BUG,狭义概念是指软件程序的漏洞或缺陷,广义概念除此之外还…

bug的生命周期你知道吗?一张图带你看懂它!

目录 1、什么是bug 2、bug的生命周期 3、如何描述一个bug 4、bug的级别 1、什么是bug 软件的bug狭义方面可以理解为是指软件程序的漏洞或缺陷,广义方面除找到程序漏洞之外,还包括测试工程师或用户所发现和提出的软件可改进的细节、或与需求文档存在差…

如何描述一个BUG以及BUG级别的定义、生命周期

目录 一、如何描述一个BUG? 二、BUG级别的定义 1.崩溃 2.严重 3.一般 4.次要 三、BUG的生命周期 一、如何描述一个BUG? 1.版本号(代码版本号) 2.测试环境/平台 不同的浏览器对同一个页面解析是不一样的: ①…

一个BUG(缺陷)的生命周期

缺陷状态 对于一个问题,其处理过程是一个周期,周期的不同阶段,其所处的状态也是不一样的。不同状态所对应的处理人也是不一样的。 打开 : 表示问题被提交等待有人处理。 重新指派 : 问题被重新指派给某人处理。 处理 …

bug生命周期bug跟踪处理

一、BUG BUG:软件的缺陷 1.BUG的定义:----与软件测试的目的对应 软件的BUG,狭义概念是指软件程序的漏洞或缺陷,广义概念除此之外还包括测试工程师或用户所发现和提出的软件可改进的细节、或与需求文档存在差异的功能实现等。 我们的职责就是&…

软件测试bug生命周期

测试人员最本质的工作就是寻找bug,提交bug、验证bug、推进bug的解决,直至软件达到发布的标准,提高软件的质量,及研发的工作效率和质量。 一、什么是bug 软件的BUG,狭义概念是指软件程序的漏洞或缺陷,广义概念除此之外…

简述Bug生命周期与Bug管理

Bug,即在测试过程中发现的问题,是测试工程师绩效最重要的考核之一,也是面试常被问到的知识领域。 今天,从Bug的生命周期入手,跟大家聊聊Bug管理。 Bug的生命周期如下所示,其中,新建、分配&…

(四)Bug的生命周期

Bug的属性 Bug重现环境 这个应该是我们重现bug的一个前提,如果没有这个前提,我们可能会无法重现问题,或者跟本就无从下手。 操作系统 这个是一般软件运行的一大前提,基本上所有的软件都依赖于操作系统之上的,对于一…

面试题之Bug的生命周期

今天来分享一个基础面试题:Bug的生命周期,虽然基础,但是面试被问到的概率很高。 Bug的生命周期,也就是一个Bug被发现到被关闭的过程,在整个生命周期中,不同的阶段对应不同的缺陷状态。 大家可以参考如下的…

测试之Bug与用例【创建Bug、Bug级别、Bug生命周期、测试用例的万能公式、设计测试用例具体方法】

文章目录 1. 如何创建Bug2. Bug的级别3. Bug的生命周期4. 面试题:跟开发产生争执怎么办5. 设计测试用例的万能公式使用万能公式对水杯设计测试用例 6. 设计测试用例的具体方法6.1 等价类6.2 边界类6.3 判定表6.4 正交法(allparis)6.5 场景设计法 1. 如何创建Bug 提…

Bug生命周期

过程描述: 1. 测试工程师开始执行测试,发现bug则新建bug,这时bug是新建状态。 2. 测试组负责人把bug修改为打开状态,表明开发人员可以修改该bug了。之所以会有打开这一步有两点目的:第一是测试组负责人对bug进行确认…