关于正负数比较大小的问题
关于正负数比较大小的问题
力扣题28. 实现 strStr(),我尝试用KMP算法解决,在执行循环while (i < strlen(S) && j < strlen(T))
的时候,第一次循环结束时int型变量j的值为-1,strlen(T)的值为2,我们期望的结果应该是继续执行第二次循环(因为-1<2)可是测试结果却证明只执行了第一次循环。
这是一个非常隐蔽的错误,产生错误的规则如下:
当把有符号操作数和无符号操作数组合的时候,会把有符号操作数“转换”成无符号操作数的值。转换过程中需要加上或者减去n+1的倍数,其中n是无符号类型能表示的最大值。
而且我没有注意到strlen函数的原型:size_t strlen (const char *s)
定义在C函数库中的size_t类型是一个typedef名字,表示C语言的一种无符
号整型。
我们回看之前的循环语句,int类型变量j的值为–1,strlen(T)的值为2且为unsigned int类型。因此,在比较前,变量j会转换成为unsigned int类型。因为负数不能被表示成无符号整数,所以转换后的值将不再为-1,而是加上4294967296(假设4294967296是最大的无符号整数),即4294967295.所以 j < strlen(T)的比较结果为0,自然只执行了一次循环。
我的解决方法——强制类型转换:
while (i < strlen(S) && j < (int)strlen(T))
将strlen(T)强制转换为int类型即可按照我们设想的那样进行比较。
希望本文能对大家有所帮助,祝大家编程越来越牛逼
关于正负数比较大小的问题相关推荐
- 负数比较大小_小升初总复习第七个基础模块:负数的认识
今天我们开始第七个基础模块的复习:负数的认识 负数的认识一共分为3个知识考点. 第一,正负数的意义 以前我们学过的6,10,7,85.....这样大于0的数叫做正数.正数前面也可以 加"+& ...
- 负数比较大小_人教版六下【第一单元】负数比较负数的大小
点击蓝色文字关注我们吧! 主讲人邬卫老师,长沙市喻沛名师"错例研究"工作室成员.今天讲的微课是人教版小学数学六年级下册第一单元<负数>中有关"比较负数的大小& ...
- 程序员编程艺术第二十七章:不改变正负数相对顺序重新排列数组(无解?)
第二十七章:不改变正负数之间相对顺序重新排列数组.时间O(N),空间O(1) 前言 本文开始之前,顺道说个事:CSDN最近开始评选10大博客专栏,投票地址为:http://event.blog.csd ...
- 计算机中的正负数表示
计算机中的正负数表示 在32位系统中,int类型占4个字节,一共是32个2进制位,int类型的首位是符号位,0代表正数,1代表负数,int的最大值是0x7fffffff(即除了最高的1Bit其他31位 ...
- JAVA入门-024(int的正负数)
int的正负数I int的正负数 int的正负数 首先要了解什么是二进制的反码和补码. 以下为一个int类型的二进制数字: 00000000 00000000 00000000 00101101 他所 ...
- 计算机底层的二进制表达——正负数与二进制转换方法及代码
以下均是以64位计算机为例,故int类型是4字节,即32位二进制数. 文章目录 1 十进制数转为二进制 1.1 正数的二进制 1.2 负数的二进制 2 正负数与原码.反码.补码 2.1 原码 2.2 ...
- c++ 负数比较大小_负数的定义(二)
上期我们发现小学教材是通过"相反意义的量"引入负数,初中教材普遍是怎么样引入的负数我们来看看(看下图). 初中同样是从"相反意义的量"引入负数,有温度.增长率. ...
- hexo的yelee主题修改文章正文颜色、正文字體大小
一.修改正文字體顏色 路徑: themes/yelee/source/css/_partial/article.styl 中修改.article-inner这个模块,加入color这一行 .artic ...
- python判断正数负数_python判断正负数方式
我就废话不多说了,大家还是直接看代码吧! a1 = raw_input("please input a number") a = int(a1) if(a!=0): if(a &g ...
最新文章
- mysql修改最后一条记录删除第一条记录
- SM37job状态意义
- 建议 Solr 用户更新 Apache POI
- 手机运行服务器无响应,《最强蜗牛》服务器无响应怎么办 服务器无响应解决方法...
- 转译和编译_10个有趣又能编译为JavaScript的语言,你用过哪些?
- Qstring 与tr翻译过来的中文进行比较的问题
- 用CSS画一些多边形状
- java-类库-Apache Commons
- Google搜索简单介绍
- 顶点式超级计算机吗,有没有数学解题软件
- 微信小程序使用swiper制作轮播图留白的解决方法
- c语言霍夫变换圆检测,Hough Transform(霍夫变换)检测Circle(圆)的几种方法
- 机器学习:几种分类识别问题
- Done、Doing、ToDo
- 电子秤称东西用计算机怎么算,怎样将电子天平或电子秤连接到PC并直接将重量值读取到Excel中...
- 对待“流氓”,要比流氓更“流氓”!
- No such file or directory(没有那个文件或目录)的小问题
- 每日N+1题 -- 算法练习 Day9
- 总结xml,适合初学者
- 光电特性实验台,QY-GD01
热门文章
- No fallbackFactory instance of type class com.chongyou.system.api.factory.RemoteUserFallbackFactory
- McAfee评论:McAfee很好吗?
- python从1 2 3 4 1000_Python语句序列“a=(1,2,3,None,(),[]);print(len(a))”的运行结果是()。 (2.0分)_学小易找答案...
- k-9 邮箱添加 qq、163、gmail 帐号
- 【基于TensorFlow2.3.0的果蔬识别系统的设计】
- php opcode逆向还原,[原创]VM代码的还原-插件篇
- CASA(Carnegie-Ames-Stanford Approach)模型、MAXENT模型
- php预览ppt,演示文稿幻灯片有哪四种视图模式?
- java中短信验证登录_java实现短信验证码功能
- 【erlang】字符串转成term