gpt4 book ai didi

c - C K&R中的逻辑运算符(波兰语反向计算器)

转载 作者:行者123 更新时间:2023-11-30 20:43:17 24 4
gpt4 key购买 nike

 int getop(char s[])
{
int i, c;

while ((s[0] = c = getch()) == ' ' || c == '\t')
;
s[1] = '\0';
i = 0;
if (isalpha(c)) //math function found.
{
while (isalpha(s[++i] = c = getch()))
;
s[i] = '\0';
if (c != 'EOF')
ungetch(c);
return MATHLIB;
}
if ((c != '.'&&c != '-') &&!isdigit(c)) /*operand found*/
return c;
if (c == '-')
{
if (!isdigit(c = getch()))
{
ungetch(c);
return '-';
}
else
{
ungetch(c);
}
}
if (isdigit(c)) /*number found*/
{
{
while (isdigit(s[++i] = c = getch()))
;
}
if (c == '.')
{
while (isdigit(s[++i] = c = getch()))
;
}
s[i] = '\0';
if (c != EOF)
ungetch(c);
return NUMBER;
}

}


这是我的反向波兰计算器代码的一部分,该代码处于正常工作状态。
问题是,我试图换线

if ((c != '.'&&c != '-') &&!isdigit(c))     /*operand found*/




if ((c != '.'&&c != '-') && (c == '+' || c == '*' || c == '/' || c == '%'))


即使我认为它可以正常工作,
根本没有。
main()中的switch函数根本不会捕获运算符。
最重要的是,每个返回值都将是默认值:printf(“ error”);

我不明白为什么它不起作用,它困扰着我。
有什么建议吗?

最佳答案

通常它应该可以工作,但是您应该在调试模式下检查情况。我想这与事实有关,即getch()返回char并将其存储在int中...但是请检查其运行方式

关于c - C K&R中的逻辑运算符(波兰语反向计算器),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54652000/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com