关于正负数比较大小的问题

力扣题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类型即可按照我们设想的那样进行比较。

希望本文能对大家有所帮助,祝大家编程越来越牛逼

关于正负数比较大小的问题相关推荐

  1. 负数比较大小_小升初总复习第七个基础模块:负数的认识

    今天我们开始第七个基础模块的复习:负数的认识 负数的认识一共分为3个知识考点. 第一,正负数的意义 以前我们学过的6,10,7,85.....这样大于0的数叫做正数.正数前面也可以 加"+& ...

  2. 负数比较大小_人教版六下【第一单元】负数比较负数的大小

    点击蓝色文字关注我们吧! 主讲人邬卫老师,长沙市喻沛名师"错例研究"工作室成员.今天讲的微课是人教版小学数学六年级下册第一单元<负数>中有关"比较负数的大小& ...

  3. 程序员编程艺术第二十七章:不改变正负数相对顺序重新排列数组(无解?)

    第二十七章:不改变正负数之间相对顺序重新排列数组.时间O(N),空间O(1) 前言 本文开始之前,顺道说个事:CSDN最近开始评选10大博客专栏,投票地址为:http://event.blog.csd ...

  4. 计算机中的正负数表示

    计算机中的正负数表示 在32位系统中,int类型占4个字节,一共是32个2进制位,int类型的首位是符号位,0代表正数,1代表负数,int的最大值是0x7fffffff(即除了最高的1Bit其他31位 ...

  5. JAVA入门-024(int的正负数)

    int的正负数I int的正负数 int的正负数 首先要了解什么是二进制的反码和补码. 以下为一个int类型的二进制数字: 00000000 00000000 00000000 00101101 他所 ...

  6. 计算机底层的二进制表达——正负数与二进制转换方法及代码

    以下均是以64位计算机为例,故int类型是4字节,即32位二进制数. 文章目录 1 十进制数转为二进制 1.1 正数的二进制 1.2 负数的二进制 2 正负数与原码.反码.补码 2.1 原码 2.2 ...

  7. c++ 负数比较大小_负数的定义(二)

    上期我们发现小学教材是通过"相反意义的量"引入负数,初中教材普遍是怎么样引入的负数我们来看看(看下图). 初中同样是从"相反意义的量"引入负数,有温度.增长率. ...

  8. hexo的yelee主题修改文章正文颜色、正文字體大小

    一.修改正文字體顏色 路徑: themes/yelee/source/css/_partial/article.styl 中修改.article-inner这个模块,加入color这一行 .artic ...

  9. python判断正数负数_python判断正负数方式

    我就废话不多说了,大家还是直接看代码吧! a1 = raw_input("please input a number") a = int(a1) if(a!=0): if(a &g ...

最新文章

  1. mysql修改最后一条记录删除第一条记录
  2. SM37job状态意义
  3. 建议 Solr 用户更新 Apache POI
  4. 手机运行服务器无响应,《最强蜗牛》服务器无响应怎么办 服务器无响应解决方法...
  5. 转译和编译_10个有趣又能编译为JavaScript的语言,你用过哪些?
  6. Qstring 与tr翻译过来的中文进行比较的问题
  7. 用CSS画一些多边形状
  8. java-类库-Apache Commons
  9. Google搜索简单介绍
  10. 顶点式超级计算机吗,有没有数学解题软件
  11. 微信小程序使用swiper制作轮播图留白的解决方法
  12. c语言霍夫变换圆检测,Hough Transform(霍夫变换)检测Circle(圆)的几种方法
  13. 机器学习:几种分类识别问题
  14. Done、Doing、ToDo
  15. 电子秤称东西用计算机怎么算,怎样将电子天平或电子秤连接到PC并直接将重量值读取到Excel中...
  16. 对待“流氓”,要比流氓更“流氓”!
  17. No such file or directory(没有那个文件或目录)的小问题
  18. 每日N+1题 -- 算法练习 Day9
  19. 总结xml,适合初学者
  20. 光电特性实验台,QY-GD01

热门文章

  1. No fallbackFactory instance of type class com.chongyou.system.api.factory.RemoteUserFallbackFactory
  2. McAfee评论:McAfee很好吗?
  3. python从1 2 3 4 1000_Python语句序列“a=(1,2,3,None,(),[]);print(len(a))”的运行结果是()。 (2.0分)_学小易找答案...
  4. k-9 邮箱添加 qq、163、gmail 帐号
  5. 【基于TensorFlow2.3.0的果蔬识别系统的设计】
  6. php opcode逆向还原,[原创]VM代码的还原-插件篇
  7. CASA(Carnegie-Ames-Stanford Approach)模型、MAXENT模型
  8. php预览ppt,演示文稿幻灯片有哪四种视图模式?
  9. java中短信验证登录_java实现短信验证码功能
  10. 【erlang】字符串转成term