小编son*_*des的帖子

使用'*'乘以时,C程序的输出令人惊讶

在K&R解决了5-10的练习后:

编写程序expr,它从命令行计算反向波兰语表达式,其中每个运算符或操作数是一个单独的参数.例如,expr 2 3 4 +*评估2*(3 + 4).

在带有'*'字符的表达式中似乎存在问题,即使是基本的问题:2 2*.由于某些奇怪的原因,'*'没有放入运算符数组,而所有其他字符如'+',' - ','/'通常都是.我已经隔离了代码的一部分(while循环),这似乎是错误的.推送功能来自第4章,只需要编译代码.

#include <stdio.h>

void push(double f);

main(int argc, char *argv[])
{
    int a = 0;
    int b;
    char operator[10];

    while (--argc > 0) {
        if (isdigit(*argv[argc]))
            push(atof(argv[argc]));
        else if (*argv[argc]=='+' || *argv[argc]=='-' || *argv[argc]=='*' || *argv[argc]=='/')
            operator[a++] = *argv[argc];
    }
    for (b = 0; b < a; b++)
        printf("%c", operator[b]);
    printf("\n");

    return 0;
}

#define MAXVAL 100  /* maximum depth of val stack */

int sp = …
Run Code Online (Sandbox Code Playgroud)

c

3
推荐指数
1
解决办法
185
查看次数

标签 统计

c ×1