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日

悬赏问题

  • ¥20 基于MSP430f5529的MPU6050驱动,求出欧拉角
  • ¥20 Java-Oj-桌布的计算
  • ¥15 powerbuilder中的datawindow数据整合到新的DataWindow
  • ¥20 有人知道这种图怎么画吗?
  • ¥15 pyqt6如何引用qrc文件加载里面的的资源
  • ¥15 安卓JNI项目使用lua上的问题
  • ¥20 RL+GNN解决人员排班问题时梯度消失
  • ¥60 要数控稳压电源测试数据
  • ¥15 能帮我写下这个编程吗
  • ¥15 ikuai客户端l2tp协议链接报终止15信号和无法将p.p.p6转换为我的l2tp线路