【其它】关于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 将个人微信账号转换为聊天机器人 与微信好友
  • git设置编码

    git config global core quotepath false 显示 status 编 git config global gui encoding utf 8 图形界面编码 git config global i18n co
  • Java 统计连续签到天数

    说明 签到功能根据业务情况的不同大致分为两种 一种是只要进入系统就会默认签到 另外一种是进入系统之后需要用户手动点击签到按钮进行签到 两种情况最大的区别就是 自动签到连续签到天数肯定至少为1天 而手动签到的情况则需要考虑断签的情况 1 自动
  • 什么是无线路由器网络协议?

    上一篇我们介绍了什么是网络协议转换器 相信看过的朋友对此都有了一定的认知 可能有些朋友在使用协议转换器的时候用的是无线路由器网络 那么 什么是无线路由器网络协议呢 接下来飞畅科技的小编就来为大家详细介绍下无线路由器网络协议是什么 感兴趣的朋
  • 日常总结 -- verdaccio搭建npm私有仓库

    verdaccio搭建npm私有仓库 参考 verdaccio https github com verdaccio verdaccio readme 搭建NPM私有库 https www jianshu com p 1d0e85d1423
  • hexo引用本地图片无法显示

    最近重新开始用起hexo 但是发现在文章中引用本地图片时总是显示不出来 问题如下图所示 花费了许久时间才解决这个问题 因此将一些解决经验整理出来 希望能帮助到大家 一 插件安装与配置 首先我们需要安装一个图片路径转换的插件 这个插件名字是h
  • 关于md文件插入视频链接的方法。(亲测可用)

    md文件中插入了HTML5的代码 如下
  • Windows通过powershell永久添加、删除环境变量

    文章目录 1 管理环境变量 PATH 1 1 添加powershell函数 1 2 函数用法 2 管理非 PATH 环境变量 使用windows系统时 当安装或解压一个可执行程序后 为了更方便的调用程序 往往会向环境变量 path中添加该程
  • 对OOD/OOP有较深的理解

    最近 经常有很多人在求职的时候遇到这样一个问题 对OOD OOP有较深的理解 那OOD OOP又是什么 那今天就来讲讲它们都是些什么 又如何去回答 1 OOA Object oriented analysis 面向对象分析 面向对象分析方法
  • 蓝桥杯-第六届蓝桥杯C语言A组/B组/C组-Python题解

    目录 方程整数解 星系炸弹 奇妙的数字 牌型种数 手链样式 饮料换购 奖券数目 三羊献瑞 加法变乘法 隔行变色 立方尾不变 方程整数解 方程 a 2 b 2 c 2 1000 这个方程有整数解吗 有 a b c 6 8 30 就是一组解 你
  • 右脑记忆法的个人理解

    先写个提纲 右脑记忆法 王峰 袁文魁等的记忆方法基础 也是大脑锦标赛 记忆大师的通用方法学 说是右脑记忆 其实就是图像记忆 因为形象化的信息 更容易记忆 最强大脑节目 记忆是很关键的一项能力 走进科学 记忆有魔方 http tv peopl
  • ieee-explore/springer文献免费下载办法

    http ieeexplore ieee org document xxxxxxx 改为 http ieeexplore ieee org sci hub tw document xxxxxxx 即可免费下载 是哈萨克斯坦女黑客搞的 见下文
  • 俞敏洪:如果创业者缺乏这8种能力,失败可能性很大

    俞敏洪是一个高明的创业家 他很早就知道 做什么生意都需要用 信仰 做前提来说服目标用户和客户 在他的 愿你的青春不负梦想 中 俞敏洪记录了很多创业的感悟 以下内容是俞敏洪结合自己的创业实践 总结了一个创业者要成功 应该具备哪八种能力 1 目
  • 王者荣耀 露娜 技巧-教学-总结

    文章目录 参考教程 技巧和个人理解 连招训练方法 出装顺序 赞同参考教程 节奏顺序 团战 个人遇到的坑 补充描述 参考教程 王者荣耀 国服榜一露娜深度教学 月下无限连 实战案例分析 哔哩哔哩 露娜教程很多 虎牙直播多 技巧和个人理解 连招训
  • 总结:Git 撤销操作

    1 还未添加到暂存区 git checkout filename 执行命令后 会回退到未修改之前的状态 2 已经添加到暂存区 git reset HEAD filename 执行命令后 会回退到工作区之前的状态 3 已经 commit 但是
  • 降低指定进程的CPU占用率(适合游戏多开)

    应用场景举例 推荐BES软件 应用场景举例 游戏多开 比如 天书世界 网页游戏 单开占用CPU30 左右 最小化能够降低到10 以下 如果多开 那么CPU就是叠加累计 非常占用CPU资源 而且挂机严重影响CPU温度 1 采用最小化窗口的方式
  • 人工智能介绍

    0 前言 前一段时间 想做一个文本相似性的系统 用于比对两个句子的相似性 因此接触了一下机器学习 其中主要是看李宏毅老师的机器学习视频课程 但是机器学习太过于复杂 对于我来说 我估计还没有入门 只是看到机器学习这个大殿 这篇文章 是对我之前
  • 基于frp原理实现的轻量级内网穿透工具frp-python

    gitee地址 https gitee com usualheart frp python github地址 https github com usualheart frp python git frp 是一个专注于内网穿透的高性能的反向代
  • git 删除右键菜单

    首先 我表示git默认的右键菜单很烦 太多项了 而我们平时用的最多的无非是一个Git Bash 删除msGit右键菜单 如果是windows 64位系统 cmd进入 C Program Files x86 Git git cheetah 目
  • 好的习惯

    从网上看到的一篇外文文章的翻译 感觉挺不错 分享一下 第三章 习惯一 积极主动 个人愿景的原则 人性本质是主动而非被动的 不仅能消极选择反应 更能主动创造有利环境 采取主动并不表示要强求 惹人厌或具侵略性 只是不逃避为自己开创前途的责任 最

随机推荐

  • 三、手把手记录如何在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