gpt4 book ai didi

c++ - CPP for循环遍历字符串的字符从意外索引开始?

转载 作者:行者123 更新时间:2023-11-30 00:43:20 26 4
gpt4 key购买 nike

for(unsigned long i=add1.length()-1;i>=0;i--){
int presum = stoi(to_string(add1.at(i))) + stoi(to_string(add2.at(i))) + curcarry;

我让这段代码循环遍历字符串 (add1) 的字符,从最后一个开始到第一个。然后它使用索引获取当前字符并将其转换为整数,将其添加到另一个保证等长字符串 (add2) 的当前字符。

我收到一个字符串超出范围的错误,在查看调试菜单时,我看到虽然我的字符串都是它们应该的,长度只有 3,但 i 值不知何故以 18446744073709551615 结尾.

附件是 i 值的图像,以及长度明显不相关的字符串。怎么回事?

调试值:

enter image description here

最佳答案

对于无符号值,i>=0 始终为真。因此,您的索引变为零,然后环绕到最大的 unsigned long 值,在您的情况下,该值是 18446744073709551615。

像这样写你的循环(例如)

for (unsigned long i = add1.length(); i-- > 0; ) {

关于c++ - CPP for循环遍历字符串的字符从意外索引开始?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55030454/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com