第二个for循环那里,如果条件为i<=s2.size()-n-1,会进去循环,即使s2.size()-n-1加了括号也是这样,但如果是int(s2.size()-n-1),那就不会进去循环,同样如果条件为i<=a,就不会进去循环,这到底是怎么回事啊
for循环条件判断异常
第二个for循环那里,如果条件为i<=s2.size()-n-1,会进去循环,即使s2.size()-n-1加了括号也是这样,但如果是int(s2.size()-n-1),那就不会进去循环,同样如果条件为i<=a,就不会进去循环,这到底是怎么回事啊
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
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无用
悬赏问题
- ¥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线路