C++ 为什么;操作数=(操作数*10)和#x2B;(表达式[i]&&x27;0&&x27;)&引用;

C++ 为什么;操作数=(操作数*10)和#x2B;(表达式[i]&&x27;0&&x27;)&引用;,c++,stack,parentheses,C++,Stack,Parentheses,为什么下面的代码执行操作数*10?为什么它不直接执行操作数=(表达式[i]-“0”)而不是操作数=(操作数*10)+(表达式[i]-“0”) else if(IsNumericDigit(表达式[i])) { 整数操作数=0; 当(i)p>因为它被告知。考虑你有2 3,4,5,你的表达式数组。然后你的代码操作数=(操作数* 10)+(表达式[i] -' 0 ');< /C> >将执行如下: operand = (0*10) + (2-0) operand = (2*10) + (3-0) ope

为什么下面的代码执行操作数*10?为什么它不直接执行操作数=(表达式[i]-“0”)而不是
操作数=(操作数*10)+(表达式[i]-“0”)

else if(IsNumericDigit(表达式[i]))
{
整数操作数=0;

当(i)p>因为它被告知。考虑你有2 3,4,5,你的表达式数组。然后你的代码<代码>操作数=(操作数* 10)+(表达式[i] -' 0 ');< /C> >将执行如下:

operand = (0*10) + (2-0)
operand = (2*10) + (3-0)
operand = (23*10) + (4-0)
operand = (234*10) + (5-0)

所以在最后,你的操作数将包含数字2345。这就像你在纸上写下数字一样。首先你写下2,然后在它后面写下3。现在你有23,它与20+3相同。因此乘以10。

如果他做操作数=(表达式[i]-'0'),表达式是“123”然后,while循环操作数将是3而不是123。请编辑问题正文以包含实际问题。标题应只是问题的简短摘要,注释应作为主要问题出现在代码之外。请添加一些上下文,并详细说明您不确定的内容。但首先请花一些时间o.当然,这个想法是处理更大的数字,比如42。好吧,它应该退出while循环,因为“”不是数字。你试过调试它吗?问题是评估给定的后缀表达式示例:2 3*4+=10好吗?如果
2 3*
导致23被推到堆栈上(而不是2和3)问题是在别处。代码是原样的,所以<代码> 12×3 <代码>将把12和3推到堆栈上。你好,AASHISH帮助了你吗?如果是这样,请考虑把它标记为答案。它不仅会奖励解决方案的作者,而且会帮助其他人。更不用说当有人在寻找未解决的问题时,你的仍然在弹出。浪费别人的时间。这对那些试图解决你问题的人是不公平的。
operand = (0*10) + (2-0)
operand = (2*10) + (3-0)
operand = (23*10) + (4-0)
operand = (234*10) + (5-0)