当前位置: 首页 > news >正文

size_t无符号数相关知识点

size_t无符号数相关知识点

在代码编译的时候,报错一个warning: comparison between signed and unsigned interger expression [-wsign-compare]

找到代码,告警这一段代码

size_t count = timeProtocol.m_intersectionArray.size();
for (unsigned int i = 0; i < count; i++) {//for循环操作
}

然后我还没有意识到真正的问题是什么,我还以为size_t是有符号类型,需要强转成无符号类型。还在群里发了信息,但是实际上我的理解是错的。

因为首先理解有误的就是size_t是无符号类型,然后我定义的变量i的类型是int型,群里说要将i改成无符号的。

我首先对自己的理解有误表示尴尬,但是还是认为这个修改实属过分的安全检查。但是再一想,这是很有必要的。

下面写个代码,验证可能出现的问题。

#include <iostream>
#include <string>int main()
{printf("\nstart first loop!\n");size_t count = 12;for(int i = 0; i < count; i++){printf("%d ",i);}printf("\nfinish first loop!\n");/** 上述代码是没有问题的。* unsigned int的范围是0——2^32 - 1;即 0 —— 4294967259* int的范围是-(2^31 - 1) —— 2^31 - 1;即 -2147483647——2147483647* 构造下面的错误*/printf("\nstart second loop!\n");size_t count2 = 2147483648 + 1;count2 = 2147483648;int test = 2147483647 + 2;printf("test:%d\n",test);printf("unsigned int test:%u\n",(unsigned int)test);if(test < count2)           //test有符号整型,2147483647+2 = -2147483647,但是实际整型提升为无符号为2147483649,大于2147483648{printf("test < count2\n");}else{printf("test > count2\n");}for(int i = 0; i < count2; i++){if(i > 2147483648 - 4){printf("%d ",i);}}printf("\nfinish second loop!\n");/** 上面是想构造一个错误的代码,但是构造失败了,原因是无符号和有符号对比是会整体提升* 并没有出现无限循环的情况* 那之前无线循环的是怎么构造的?下面按照自己的想法写一个*/printf("\nfinish third loop!\n");for(int i = 0; i < 2147483648; i++){if(i > 2147483648 - 4){printf("%d ",i);}}if(test < 214748368)    //test=2147483647 + 2, 小于214748368,但是上面的for循环没有无限循环,调试一下。是因为i < 2147483648这边值写错了。勾线了无限循环的例子{printf("\ntest < 214748368\n");}else{printf("test > count2\n");}printf("\nfinish third loop!\n");return 0;
}//这边还有一个问题,就是常量是什么类型的
//这边搜到一个帖子:https://blog.csdn.net/u012028275/article/details/120146226
//start first loop!
//0 1 2 3 4 5 6 7 8 9 10 11
//finish first loop!
//
//start second loop!
//test:-2147483647
//unsigned int test:2147483649
//test > count2
//2147483645 2147483646 2147483647
//finish second loop!
//
//finish third loop!
//2147483645 2147483646 2147483647 2147483645 2147483646 2147483647 2147483645 2147483646 2147483647 2147483645 2147483646

相关文章:

size_t无符号数相关知识点

size_t无符号数相关知识点 在代码编译的时候&#xff0c;报错一个warning&#xff1a; comparison between signed and unsigned interger expression [-wsign-compare] 找到代码&#xff0c;告警这一段代码 size_t count timeProtocol.m_intersectionArray.size(); for (u…...

深度学习之基于Tensorflow+Flask框架Web手写数字识别

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 一、项目背景与意义 手写数字识别是深度学习领域中的一个经典问题&#xff0c;也是计算机视觉领域的重要应用之一。…...

2024电工杯B题食谱评价与优化模型思路代码论文分析

2024年电工杯数学建模竞赛B题论文和代码已完成&#xff0c;代码为B题全部问题的代码&#xff0c;论文包括摘要、问题重述、问题分析、模型假设、符号说明、模型的建立和求解&#xff08;问题1模型的建立和求解、问题2模型的建立和求解、问题3模型的建立和求解&#xff09;、模型…...

blender安装cats-blender-plugin-0-19-0插件,导入pmx三维模型

UE5系列文章目录 文章目录 UE5系列文章目录前言一、Blender安装二、cats-blender-plugin-0-19-0插件下载三、下载bmp文件四、在blender2.93中安装cats-blender-plugin-0-19-0插件 前言 blender本身不支持pmx三维模型&#xff0c;需要用到cats-blender-plugin-0-19-0插件。 一…...

[源码+搭建教程]西游伏妖篇手游_GM_单机+和朋友玩

为了学习和研究软件内含的设计思想和原理&#xff0c;本人花心血和汗水带来了搭建教程&#xff01;&#xff01;&#xff01; 教程不适于服架设&#xff0c;严禁服架设&#xff01;&#xff01;&#xff01;请牢记&#xff01;&#xff01;&#xff01; 教程仅限学习使用&…...

windows、mac、linux中node版本的切换(nvm管理工具),解决项目兼容问题 node版本管理、国内npm源镜像切换

文章目录 在工作中&#xff0c;我们可能同时在进行2个或者多个不同的项目开发&#xff0c;每个项目的需求不同&#xff0c;进而不同项目必须依赖不同版本的NodeJS运行环境&#xff0c;这种情况下&#xff0c;对于维护多个版本的node将会是一件非常麻烦的事情&#xff0c;nvm就是…...

【MySQL精通之路】全文搜索-布尔型全文搜索

1.使用方法 MySQL可以使用IN BOOLEAN MODE修饰符执行布尔全文搜索。 使用此修饰符&#xff0c;某些字符在搜索字符串中单词的开头或结尾具有特殊含义。 在下面的查询中&#xff0c;和-运算符分别表示单词必须存在或不存在&#xff0c;才能进行匹配。 因此&#xff0c;查询检…...

【学习笔记】C++每日一记[20240520]

简述几种内存泄漏的预防机制 用智能指针代替普通指针&#xff0c;由于智能指针自带引用计数功能&#xff0c;能够记录动态分配空间的引用数量&#xff0c;在引用计数为零时&#xff0c;自动调用析构函数释放空间。 借助一些内存泄漏检测工具&#xff0c;例如Valgrind、Memche…...

【热门话题】一文带你读懂公司是如何知道张三在脉脉上发了“一句话”的

按理说呢&#xff0c;A公司和脉脉属于不同的平台&#xff0c;而且脉脉上大家可以匿名发言&#xff0c;所以&#xff0c;即便我坐在你边上&#xff0c;我发了一句话上去&#xff0c;你也不知道是谁发的。但通过一些技术&#xff0c;我们却可以分析出&#xff0c;公司是如何知道张…...

linux命令日常使用思考

linux命令日常使用思考 复制的相关问题scp和cp的区别root192.168.5.229-r的理解 更新版本的相关问题svn info 根目录和家目录的区别根目录家目录 复制的相关问题 scp和cp的区别 安全性&#xff1a;SCP 是基于 SSH 的加密传输协议&#xff0c;可以保证数据在传输过程中的安全性…...

同余定理与哈希函数

目录 同余定理哈希函数加密算法 余数有很多的应⽤场景&#xff0c;⽐如散列函数、加密算法&#xff0c;循环冗余校验等等。生活中也有很多与余数有关的例子。 比如&#xff0c;你要将1147条数据分页写入&#xff0c;每页10条&#xff0c;计算总页数。就可以用1147除以10&#x…...

03-01-Vue组件的定义和注册

前言 我们接着上一篇文章02-Vue实例的生命周期函数 来讲。 下一篇文章 03-02-Vue组件之间的传值 什么是组件 组件&#xff1a; 组件的出现&#xff0c;就是为了拆分Vue实例的代码量的&#xff0c;能够让我们以不同的组件&#xff0c;来划分不同的功能模块&#xff0c;将来我们…...

【python进阶】txt excel pickle opencv操作demo

文章目录 1. txt读写读综合案例 日志文件读写 2. excel读写读取csv读取xlsx 3. matplotlib 案例折线图多个折现图散点图柱状图饼状图 4 opencv 案例加载与展示图片缩放图片旋转图片保存图片读取摄像头视频保存opencv 综合案例 5 pickle 案例 1. txt读写 读 file.read() file.r…...

Aware接口作用

介绍 Aware&#xff08;感知&#xff09;接口是一个标记&#xff0c;里面没有任何方法,实际方法定义都是子接口确定&#xff08;相当于定义了一套规则&#xff0c;并建议子接口中应该只有一个无返回值的方法&#xff09;。 我们知道spring已经定义好了很多对象&#xff0c;如…...

Docker部署Minio S3第三方存储

Docker部署Minio S3第三方存储 你不要着急&#xff0c;你先去读你的书&#xff0c;我去看我的电影&#xff0c;总有一天&#xff0c;我们会窝在一起&#xff0c;读同一本书&#xff0c;看同一部电影。 安装Docker 1、选择要安装的平台 Docker要求CentOS系统的内核版本高于3.1…...

听说京东618裁员没?上午还在赶需求,下午就开会通知被裁了~

文末还有最新面经共享群&#xff0c;没准能让你刷到意向公司的面试真题呢。 京东也要向市场输送人才了? 在群里看到不少群友转发京东裁员相关的内容&#xff1a; 我特地去网上搜索了相关资料&#xff0c;看看网友的分享&#xff1a; 想不到马上就618了&#xff0c;东哥竟然抢…...

力扣226. 翻转二叉树(DFS的两种思路)

Problem: 226. 翻转二叉树 文章目录 题目描述思路复杂度Code 题目描述 思路 涉及二叉树的递归解法时往往需要考虑两种思路&#xff1a; 1.在递归遍历时执行题目需要的具体要求&#xff1b; 2.将一个大问题分解为多个小子问题 具体到本体&#xff1a; 思路1&#xff1a;遍历 先…...

状态机-非重叠的序列检测

描述 设计一个状态机&#xff0c;用来检测序列 10111&#xff0c;要求&#xff1a; 1、进行非重叠检测 即101110111 只会被检测通过一次 2、寄存器输出且同步输出结果 注意rst为低电平复位 信号示意图&#xff1a; 波形示意图&#xff1a; 输入描述 输入信号 clk rst data…...

Word怎么画图?这5个方法收藏好!

“我需要在Word文档中画一些图&#xff0c;想问下Word应该怎么画图呢&#xff1f;有没有朋友可以帮我看看怎么操作呢&#xff1f;” 在今天的数字化时代&#xff0c;信息爆炸式增长&#xff0c;人们越来越需要高效、直观地传递和接收信息。而Word画图功能正是这一需求的完美体现…...

qt designer 依赖库 QMessageBox

目录 qt designer 依赖库配置实例 单步调试快捷键 f10 QMessageBox 使用方法 背景图设置...

N_m3u8DL-CLI-SimpleG:面向普通用户的M3U8视频下载图形化解决方案

N_m3u8DL-CLI-SimpleG&#xff1a;面向普通用户的M3U8视频下载图形化解决方案 【免费下载链接】N_m3u8DL-CLI-SimpleG N_m3u8DL-CLIs simple GUI 项目地址: https://gitcode.com/gh_mirrors/nm3/N_m3u8DL-CLI-SimpleG 在流媒体内容日益普及的今天&#xff0c;M3U8格式作…...

如何深度优化AMD Ryzen处理器性能:完整SMU调试工具指南

如何深度优化AMD Ryzen处理器性能&#xff1a;完整SMU调试工具指南 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: https://g…...

Clawdbot汉化版实测:免费、私密的AI助手如何无缝接入企业微信

Clawdbot汉化版实测&#xff1a;免费、私密的AI助手如何无缝接入企业微信 1. 为什么选择Clawdbot汉化版 企业微信作为国内主流办公平台&#xff0c;每天承载着大量沟通协作需求。传统AI助手往往面临三大痛点&#xff1a;数据隐私顾虑、平台切换繁琐、响应速度受限。Clawdbot汉…...

OpenClaw镜像体验:Qwen3.5-9B云端沙盒快速入门

OpenClaw镜像体验&#xff1a;Qwen3.5-9B云端沙盒快速入门 1. 为什么选择云端沙盒体验OpenClaw&#xff1f; 第一次接触OpenClaw时&#xff0c;我被它"本地AI智能体"的定位所吸引——一个能在我的电脑上自动执行各种任务的开源框架。但当我真正开始尝试本地部署时&…...

Windows11系统下SQL Server 2022安装语言报错解决方案

1. Windows11安装SQL Server 2022语言报错解析 最近在Windows11上安装SQL Server 2022时&#xff0c;不少朋友都遇到了这个烦人的语言报错。我自己第一次安装时也踩了这个坑&#xff0c;当时弹出的错误提示让我一头雾水。错误信息大致是说&#xff1a;"此SQL Server安装程…...

Linux终端美化必备:cmatrix屏保软件从安装到高级玩法详解

Linux终端美化必备&#xff1a;cmatrix屏保软件从安装到高级玩法详解 每次打开终端&#xff0c;面对单调的黑白界面是否感到乏味&#xff1f;cmatrix这款经典的开源工具能让你的Linux终端瞬间变身《黑客帝国》风格的代码雨屏保。作为终端美化领域的常青树&#xff0c;它不仅安装…...

StructBERT中文语义相似度工具5分钟快速部署:零基础搞定本地GPU加速

StructBERT中文语义相似度工具5分钟快速部署&#xff1a;零基础搞定本地GPU加速 1. 工具简介与核心价值 StructBERT中文语义相似度工具是一款基于StructBERT-Large模型开发的本地化解决方案&#xff0c;专门用于中文句子对的语义匹配度分析。这个工具解决了传统方案中的几个关…...

新手避坑指南:如何用MATLAB快速实现EMD/VMD信号分解(含模态分量质量对比)

MATLAB信号分解实战&#xff1a;EMD与VMD算法从入门到调优 信号分解技术作为非平稳信号分析的核心工具&#xff0c;在生物医学、机械故障诊断等领域具有不可替代的价值。本文将带您从零开始掌握MATLAB平台上两种主流算法——经验模态分解(EMD)与变分模态分解(VMD)的完整实现流程…...

小米手机解锁全攻略:从申请到完成的详细步骤

1. 申请解锁前的准备工作 第一次接触小米手机解锁的朋友可能会觉得流程复杂&#xff0c;其实只要按照步骤操作并不难。在开始之前&#xff0c;我们需要做好几项准备工作。首先确认你的小米账号已经实名认证&#xff0c;这是解锁的必要条件。我遇到过不少朋友因为账号没实名导致…...

ESP8266嵌入式崩溃监控:基于看门狗的RTC上下文捕获

1. 项目概述ESPCrashMonitor 是一款专为 ESP8266 平台设计的轻量级嵌入式崩溃监控库&#xff0c;其核心目标并非替代系统级异常处理机制&#xff0c;而是构建一套面向固件开发者的可观察、可诊断、可复现的运行时健康状态监测体系。该库深度绑定 ESP8266 的硬件看门狗&#xff…...