String hello = "44+"
int result=0, top=-1;
int []stack = new int[hello.length()];
for(int i=0 ; i<hello.length() ; i++)
{
char c = s.charAt(i);
if(c >= '0' && c <= '9')
stack[++top]=(int)(c-'0');
else
{
int x=stack[top--]; //pop
int y=stack[top--]; //pop
switch(c)
{
case '+' : result = x + y;
break;
case '-' : result = y - x;
break;
case '*' : result = x * y;
break;
case '/' : result = y / x;
break;
default : result = 0;
}
stack[++top]=result; //push
}
}
result = stack[top--]; //pop
return result;
44以上のストア8->戻り結果が発生し、メインに印刷すると、出力として8が返されます。これは正しいです。
このコードを置き換えると
stack[++top]=(int)(c-'0');
これで
stack[++top]=(int)(c);
出力は次のようになります=104.. 2番目のコードは私には正しいように見えますが、正しい出力が得られません
私の質問は
- なぜ
c-'0'
使用されるのか、それc
だけではないのですか? - なぜ
case '-' : result = y - x
使用され、使用されないのx - y
ですか? - なぜ
case '/' : result = y / x
使用され、使用されないのx / y
ですか?
前もって感謝します