Yas*_*_1D 1 c++ postfix-notation shunting-yard
我正在尝试使用Shunting-yard算法,所以我开始研究它.在这样做的同时,我发现了一些我不太了解的有趣文档:
// Current token is a number, push
// it to stack for numbers.
else if(isdigit(tokens[i])){
int val = 0;
// There may be more than one
// digits in number.
while(i < tokens.length() &&
isdigit(tokens[i]))
{
val = (val*10) + (tokens[i]-'0');
i++;
}
values.push(val);
}
Run Code Online (Sandbox Code Playgroud)
我不明白为什么在里面while,变量val乘以10(val=(val*10)).有人可以帮助我理解为什么算法必须这样做?
因为否则你只需添加数字.比如说你想要123:你得到1,乘以10得到10,加上2得到12,乘以10得到120,然后加上3得到123.
如果你省略了乘法10,你只需要1 + 2 + 3 == 6改为.