gpt4 book ai didi

c - 从字符串读取关键字时重构 if 语句

转载 作者:行者123 更新时间:2023-11-30 15:06:34 25 4
gpt4 key购买 nike

我对编程还比较陌生,但已经在 SO 上潜伏了很长时间了。

我目前正在大学学习,在编写一个程序时遇到了一些麻烦,该程序本质上是一个非常基本的计算器,其中输入和输出以十六进制显示给用户。

大多数代码都很好用,但我想知道是否有一种方法可以重构这个特定的代码,这样它就不会(本质上)只使用一大块 if 语句来将用户输入的运算符链接在一起到它对应的函数?

这是我所做的事情以及我需要重构的片段。

就我个人而言,我觉得我应该要么嵌套,要么利用循环来实现这一点,但我没有足够的知识来确定!

非常感谢。

    int main() {
printf ("Type in an expression: ");
scanf ("%x %s %x", &a, op, &b);
if (strcmp (op, "add") == 0)
{
add(a, b);
}
if (strcmp (op, "sub") == 0)
{
sub(a, b);
}
if (strcmp (op, "and") == 0)
{
band (a, b);
}
if (strcmp (op, "or") == 0)
{
bor (a, b);
}
/* ...... and so on .....*/

}

最佳答案

您应该使用else if。 (如果 op 匹配 "add" ,那么测试它是否也匹配 "or" (等等)绝对毫无意义。)

进行这种解析的“专业”方法是使用词法分析器(例如 flex )和解析器生成器(例如 bison ),它们允许您生成同时匹配所有可能性的 C 代码,但这些需要一点时间来学习。对于简单的事情,您可以使用 if elsestrcmp

关于c - 从字符串读取关键字时重构 if 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38947771/

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