我正在尝试做Shunting-yard algorithm,所以我开始研究它。在这样做的过程中,我发现了一些我并不真正理解的有趣的文档:
// 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);
} 我不明白为什么在while中,变量val要乘以10 (val=(val*10))。有人能帮我理解为什么这个算法要这么做吗?
发布于 2019-02-01 19:06:07
因为否则你只会把数字加起来。例如,假设你想要123:你得到1,与10相乘得到10,添加2得到12,与10相乘得到120,然后添加3得到<代码>D9。
如果省略了10的乘法运算,那么只会得到1 + 2 + 3 == 6。
https://stackoverflow.com/questions/54478184
复制相似问题