很早以前写的逆波兰式运算程序,在执行期间发现了Windows Shell对乘号处理的问题,主要表现为将“ * ”给解读为当前文件夹下所有文件名,详述如下。
代码十分简单,逆波兰计算式算法本身也没有什么难点。
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#define MAXSIZE 100
#define DEBUG
double stack[MAXSIZE]; //栈
int top = 0;
double push(double x) //压栈
{
if(top == MAXSIZE)
return -1;
stack[top ++] = x;
return 0;
}
double pop() //出栈
{
return stack[--top];
}
int main(int argc,char* argv[])
{
int i;
for(i = 1;i <= argc - 1;i ++)
{
if(isdigit( *argv[i] )) //若是数字则压栈
push(atof(argv[i]));
else
{
switch(*argv[i])
{
case '+' :
{
push(pop() + pop());
break;
}
case '-' :
{