为什么下面的代码在做operand * 10
?为什么它不只是做operand = (expression[i] - '0');
而不是operand = (operand*10) + (expression[i] - '0');
为什么“操作数=(操作数* 10)+(表达式[i] - '0');”
else if(IsNumericDigit(expression[i]))
{
int operand = 0;
while(i<expression.length() && IsNumericDigit(expression[i]))
{
operand = (operand*10) + (expression[i] - '0');
// why is he doing operand *10?
// example : if have a string 2 3 * 3 4 +.
// It is pushing 23 on stack rather than 2 and 3
i++;
}
i--;
S.push(operand);
}
如果他做的操作数=(表达式[i] - '0')并且表达式为“123”,那么在while循环操作数为3之后123. – user1438832
请编辑问题主体以包含实际问题。标题应该只是问题的简短摘要,评论应该在代码之外作为主要问题。还请添加一些上下文,并详细说明您不确定的内容。但首先请花一些时间[阅读如何提出好问题](http://stackoverflow.com/help/how-to-ask)。 –
当然,这个想法是处理像42这样的大数字。呃,它应该退出while循环,因为''不是数字数字。你有没有试过调试它? – Rene