【其它】关于size_t与int之间的比较

2023-11-16

void SeqListInsertByPos(SeqList* pList, size_t pos, DateType x)
{
	assert(pList != NULL && pos <= pList->_size);
	if (IsFull(pList))
		printf("顺序表已满,无法正常进行插入\n");
	else
	{
		for (int i = pList->_size - 1; i >= pos; --i)
		{
			pList->base[i + 1] = pList->base[i];
		}
		pList->base[pos] = x;
		++pList->_size;
	}
}

这是我在实现顺序表过程中所实现的顺序表的按位置插入的一个功能,然而在测试对下标为0的位置进行插入的时候,却发现出现了异常错误。
在VS2019的调试窗口中,我发现在for循环中i的值从pList->_size - 1逐渐减小至0,但是它没有按照我的想法停下来,而是继续减了下去,这个时候我意识到事情不是像看上去那么的简单。

后来我发现,在我定义的循环中,i是int型,但pos是size_t类型。int型再与size_t类型比较过程中,会先把int类型转换为无符号类型再做比较。当出现负数,比如-1时,对应的无符号是4294967295,所以程序会陷入无限循环之中,而在我的顺序表中,自然也发生了越界,造成了访问出错的异常。

所以我的正确解决方式应为:

void SeqListInsertByPos(SeqList* pList, size_t pos, DateType x)
{
	assert(pList != NULL && pos <= pList->_size);
	if (IsFull(pList))
		printf("顺序表已满,无法正常进行插入\n");
	else
	{
		for (int i = pList->_size - 1; i >= (int)pos; --i)
		{
			pList->base[i + 1] = pList->base[i];
		}
		pList->base[pos] = x;
		++pList->_size;
	}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【其它】关于size_t与int之间的比较 的相关文章

  • 男人必读 --看了永不后悔,女人想看也可以进去……

    1 事业永远第一 虽然金钱不是万能的 但没有钱是万万不能的 虽然这句话很俗 但绝对有道理 所以30岁之前 请把你大部分精力放在你的事业上 事业远比爱情重要 如果说事业都不能永恒 那么爱情只能算是昙花一现 记 得那首 没有钱你会爱我吗 的歌吗
  • MyEclipse8 GA 下载地址 注册码 优化指南

    官方网站限制大陆IP 可以通过http ajava org 直接下载 下面是winodws linux的下载地址 其他版本请自行去http ajava org 下载 注册码7 5GA 8 0GA貌似通用 但不绝对 window版下载地址 h
  • OSI七层网络模型和TCP/IP五层模型

    文章目录 1 OSI的来源 2 OSI七层模型的划分 3 TCP IP五层模型 1 OSI的来源 OSI Open System Interconnect 即开放式系统互联 一般都叫OSI参考模型 是ISO 国际标准化组织 组织在1985年
  • Java 统计连续签到天数

    说明 签到功能根据业务情况的不同大致分为两种 一种是只要进入系统就会默认签到 另外一种是进入系统之后需要用户手动点击签到按钮进行签到 两种情况最大的区别就是 自动签到连续签到天数肯定至少为1天 而手动签到的情况则需要考虑断签的情况 1 自动
  • 日常总结 -- verdaccio搭建npm私有仓库

    verdaccio搭建npm私有仓库 参考 verdaccio https github com verdaccio verdaccio readme 搭建NPM私有库 https www jianshu com p 1d0e85d1423
  • WScript.CreateObject(WScript.Shell)

    为什么 WScript CreateObject WScript Shell 无法执行 源 VBS 程序 Dim t Set t WScript CreateObject WScript Shell Set t Nothing WScrip
  • Windows下Git-preview中文乱码的解决方法

    在Windows下安装Git preview 1 7 4后 使用中发现许多的乱码问题 感觉甚是不便 这是因为Git是在linux下开发的管理软件 而linux的编码方式是基于UTF 8的 所以移植到Windows之后难免会存在编码方式不同的
  • 关于md文件插入视频链接的方法。(亲测可用)

    md文件中插入了HTML5的代码 如下
  • word无法显示图片的问题终于搞定!oh yeah!

    我的word中的图片只显示一个方框 这个问题困扰我有一段时间了 今天终于搞定 原因如下 Word中不能显示公式 问 在Word 2003中编辑好的公式无法显示 只显示为一个方框 该怎么办 答 Word把使用公式编辑器输入的公式作为图形处理
  • 正确理解层次方框图

    正确的层次方框图示例 图片来源 https blog csdn net qq 15037231 article details 60467793 注意 在网上搜索层次方框图会出现很多类似的图 但很多都是错的 层次方框图用树形结构的一系列多层
  • FIX协议介绍与QuickFIX使用入门(上)

    定义 FIX协议是由国际FIX协会组织提供的一个开放式协议 目的是推动国际贸易电子化的进程 在各类参与者之间 包括投资经理 经纪人 买方 卖方建立起实时的电子化通讯协议 FIX协议的目标是把各类证券金融业务需求流程格式化 使之成为一个个可用
  • Hexo个人博客主题配置

    系列文章目录 1 Hexo Github Gitee 搭建个人博客 2 Hexo个人博客主题配置 目录 系列文章目录 配置站点信息 修改主题 Next主题配置 样式 favicon avatar rss 代码块 回到页面顶部 阅读进度条 G
  • 串口服务器的通讯模式

    串口服务器 一个为RS 232 485 422到PC IP之间完成数据转换的具有强大功能的方便快捷的通讯接口转换器 串口服务器通过作为服务器端 提供RS 232 485 422终端串口与TCP IP网络的数据双向透明传输 提供串口转网络功能
  • 嵌入式系统的通讯协议:I2C通讯、SPI通讯、USB通讯、SDIO 通讯、I2S通讯、PCI通讯简介

    本文简单的描述了在实际应用中会碰到的一些总线协议 让各位读者对实际系统中的总线有个概念上的理解 一 I2C I2C Inter Integrated Circuit 总线是一种由PHILIPS公司开发的两线式串行总线 用于连接微控制器及其外
  • 总结:Git 撤销操作

    1 还未添加到暂存区 git checkout filename 执行命令后 会回退到未修改之前的状态 2 已经添加到暂存区 git reset HEAD filename 执行命令后 会回退到工作区之前的状态 3 已经 commit 但是
  • Microsoft Office 2016 VOL版下载

    链接都是VOL版 和零售版功能是一样的 只是激活方便一些 三个下载链接 第一个是Office就是包含了Word Excel PPT那些的 另外两个一个是Visio 一个是Project 如果不需要的话 只下载第一个就可以了 激活方法在下面
  • 15款最好的Windows安全检测工具

    2006 05 09 13 29 Kevin Beaver TechTarget 你想测试你的Widnows系统的安全性吗 如果你选对了工具 其实这是一件非常有趣的工作 如果你正为挑选合适的工具而苦恼 那就让本文给你一些帮助吧 关于安全测试
  • python学习随笔

    打开文件管理器窗口方式 方式一 import subprocess 执行指令 explorer是windows文件管理器的指令 目录 subprocess Popen r explorer C Users dell Desktop hmui
  • CSDN竞赛6期题解

    CSDN编程竞赛报名地址 https edu csdn net contest detail 16 请不要删掉此地址 总结 这次竞赛题目比较简单 没多大必要写题解 更多的还是给出自己的一些体会和建议吧 很多同学已经对比赛规则和编程体验给出了
  • 未能加载文件或程序集“office, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c”或它的某一个依赖项。拒绝访问

    未能加载文件或程序集 office Version 15 0 0 0 Culture neutral PublicKeyToken 71e9bce111e9429c 或它的某一个依赖项 拒绝访问 原因 office2013资源 原因 是因为

随机推荐

  • 三、手把手记录如何在VisualDSP++软件里创建工程

    记录一下 方便以后翻阅 VisualDSP 是ADI公司针对其DSP器件开发的软件开发平台 支持ADI公司BF60x之外的所有系列DSP处理器 包括Blackfin系列和 ADSP 21XX系列定点处理器 SHARC系列和TigerSHAR
  • STM32 伺服电机 指令脉冲+方向位置控制模式 主从定时器 实现PWM脉冲数精确控制

    实验室有个项目涉及到多个步进电机以及伺服电机的控制 需要电机得到一个触发信号后精确移动一段距离 下面以单个伺服电机控制为例 利用伺服电机的指令脉冲加方向位置控制模式实现精确位置控制 关于伺服电机 所谓指令脉冲 方向控制模式 就是由一路PWM
  • 【STM32】在手册中查看IO的功能说明

    主要功能描述 芯片实际上是通过一定方式读取和控制引脚高低电平的器件 引脚分类 功能说明 备注 电源 VBAT VDD VSS VDDA VSSA VREF VREF 等 link 晶振 IO 主晶振 IO RTC 晶振 IO 下载 IO 用
  • Kotlin Lazy vs Lateinit 属性. 何时使用哪个属性?

    原文链接 Kotlin提供了许多很棒的特性 我们可以利用这些功能 快速构建高质量的应用程序 在所有这些特性中 lateinit 和 lazy 是重要的初始化属性 有必要知道何时使用 lateinit 以及何时使用 lazy 初始化 late
  • 【搜索和回溯】剑指 Offer 28. 对称的二叉树

    题目描述 请实现一个函数 用来判断一棵二叉树是不是对称的 如果一棵二叉树和它的镜像一样 那么它是对称的 示例 输入 root 1 2 2 3 4 4 3 输出 true 题解 运用DFS遍历 递归 求解 Definition for a b
  • mysql索引基础

    1 创建索引 alter table table name add index index name column list alter table table name add unique index name column list
  • Spring框架入门之HelloWorld

    一 什么是框架 框架 即framework 其实就是某种应用的半成品 就是一组组件 供你选用完成你自己的系统 简单说就是使用别人搭好的舞台 你来做表演 而且 框架一般是成熟的 不断升级的软件 框架是对特定应用领域中的应用系统的部分设计和实现
  • 常见的无参考图像质量评价指标汇总

    进一步学习https www csdn net gather 22 MtzaIgxsMzQwLWJsb2cO0O0O html 一 基于空间分布的角度 1 直观的方法 直方图 看灰阶数和灰阶分辨率 2 方差或者标准差 方差是指图像像素灰度值
  • 语言学句法分析树形图怎么画_哇,好大一棵树! 如何优雅地画句法树形图 丨语言学午餐...

    原标题 哇 好大一棵树 如何优雅地画句法树形图 丨语言学午餐 相信很多语言学 非语言学学生 在看到句法学的书上 论文上 试卷上出现这样的东西 你想的第一个问题可能是 这XX是什么 当你知道这是句法树形图之后 你想的第二个问题可能是 教科书上
  • Vue3 <script setup>中局部引入组件,动态组[Vue warn]: Vue received a Component which was made a reactive object.

    vue3 动态组件使用报错 Vue 提示如果动态组件绑定的是一个ref 的响应式对象会造成不必要的性能问题 建议用 markRaw 或者 shallowRef 代替 ref 由于Vue3中动态组件绑定的是组件实力并不是组件名称 所以用sha
  • Py之fvcore:fvcore库的使用方法之详细攻略

    Configs from fvcore common config import CfgNode Config definition C CfgNode
  • Android——ContentProvider详解

    1 简介 ContentProvider 内容提供者属于Android的四大组件之一 用于进程间 进行数据交互 共享 即跨进程通信 原理 使用binder机制 后续再进行介绍 统一资源标识符 URI MIME数据类型 全称Multipurp
  • Linux下破解root用户密码

    目录 一 密码破解 Centos7 二 grub2引导菜单加密 linux下破解root密码 一 密码破解 Centos7 通过进入单用户模式修改内核参数来进行修改密码 步骤 官方推荐方法 rd break 以只读的方式 终止 以可读写的方
  • mysql建立索引

    1 添加PRIMARY KEY 主键索引 mysql gt ALTER TABLE table name ADD PRIMARY KEY column 2 添加UNIQUE 唯一索引 mysql gt ALTER TABLE table n
  • JSON格式数据示例操作

    json示例数据 test1 wx9fdb8ble7ce3c68f test2 123456789 testData1 testdatason1 97895455 testdatason2 3 testData2 testshuzu1 12
  • windows 下 文件多服务器同步工具cwRsync使用配置教程

    1 cwRsync安装 首先 准备好服务端cwRsyncServer 4 0 5 Installer exe和客户端的安装包cwRsync 4 0 5 Installer exe 这里说明一下cwRsync的服务端和客户端 cwRsync的
  • IMU+激光雷达实现大规模动作捕捉

    VR技术的兴起 使得动作捕捉这门让人们可以使用肢体语言在虚拟世界中进行互动和交流的技术逐渐成为热门 随着科技的进步 如今的动作捕捉技术已经十分成熟 但在大规模场景中准确地捕捉人体运动仍然具有挑战性 它对于体育大型赛事 舞台表演 人群互动等的
  • synchronized 与 Lock 的异同

    最近在做一个监控系统 该系统主要包括对数据实时分析和存储两个部分 由于并发量比较高 所以不可避免的使用到了一些并发的知识 为了实现这些要求 后台使用一个队列作为缓存 对于请求只管往缓存里写数据 同时启动一个线程监听该队列 检测到数据 立即请
  • linux下安装和使用mongo

    1 下载和安装 1 1版本匹配 Linux下运行 uname a 查看Linux系统的版本 root VM 0 7 centos bin uname a Linux VM 0 7 centos 3 10 0 514 26 2 el7 x86
  • 【其它】关于size_t与int之间的比较

    void SeqListInsertByPos SeqList pList size t pos DateType x assert pList NULL pos lt pList gt size if IsFull pList print