第二个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无用
悬赏问题
- ¥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#的问题,如何解决?