这个循环应该添加两个数字,这些数字按照各自的数字存储在向量中。因此,例如leftc将包含[10] {0,9,0,0,0,0,0,0,5,7}并且rightc将包含
[10] {0,0,0,0,0,0,0,0,9,9,6}并且在循环结束时number
应包含“0900000153”(前导零被删除程序)。它完美地工作,直到它达到index = 0然后它会导致溢出错误,但我无法弄清楚原因。
string number; // accumulates the result of the addition
int num; // holds the result of adding corresponding elements
short carry = 1;
for ( size_t index = leftc.size() - 1; index >= 0; index-- ) // start from the end of the vectors and work toward the beginning
{
num = leftc.at(index) + rightc.at(index); // add the two elements and store in num
if ( num >= 10 )
{
num %= 10;
leftc.at(index - 1) += carry;
}
num += '0'; // convert num from int to char
number.insert( number.begin(), num ); // store num at front of number
}
非常感谢任何帮助。谢谢!
答案 0 :(得分:3)
你这里有问题
for ( size_t index = leftc.size() - 1; index >= 0; index-- )
由于size_t
未签名,index
总是为>=0
。
答案 1 :(得分:1)
当您的index
为0时,您的(index-1)
将为-1 ...因此会出现溢出错误...因为您正尝试访问索引为“-1”的项目。< / p>
答案 2 :(得分:0)
if ( num >= 10 )
{
num %= 10;
leftc.at(index - 1) += carry;
}
在这里,如果index为零,则会出现错误 - 您访问第(-1)个元素。