AsX.20 2022-03-13 12:21 采纳率: 33.3%
浏览 55
已结题

for循环条件判断异常

img

img


第二个for循环那里,如果条件为i<=s2.size()-n-1,会进去循环,即使s2.size()-n-1加了括号也是这样,但如果是int(s2.size()-n-1),那就不会进去循环,同样如果条件为i<=a,就不会进去循环,这到底是怎么回事啊

  • 写回答

2条回答 默认 最新

  • CSDN专家-link 2022-03-13 12:26
    关注

    提示数组越界了
    你用个printf语句输出一下a的值看看
    你这s1和s2是一样长的,a = s2.size() - n -1,这里n=s1.size(),那么a的值就是-1了啊,自然进不了循环
    你的问题和错误的原因是:
    vector的size函数的返回值是无符号型,也就是说不会是负数。
    int a = s2.size()-n-1时,由于a定义成int是有符号的,所以在for循环中i<=a是不会成立的,所以不进循环
    但如果写成
    for(int i=1;i<=s2.size()-n-1时,s2.size()-n-1的结果会存储到一个隐式变量中,这个变量默认会是s2.size()函数的返回值类型,即无符号整型,导致这个结果不是-1,而是整型的0xFFFFFFFF,一个很大的值,所以能进循环,且由于值超过1,导致循环中访问s2数组时,下标越界而崩溃了

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 3月22日
  • 已采纳回答 3月14日
  • 修改了问题 3月13日
  • 创建了问题 3月13日

悬赏问题

  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?