【问题标题】:C: How do you call a function under a condition without using if-else?C:如何在不使用 if-else 的情况下调用函数?
【发布时间】:2018-10-16 01:16:49
【问题描述】:

在我对 cs 的介绍中,有人告诉我在不使用 if\else 语句或 (a?b-c) 的情况下编写程序,并且他们给了我们一个 int 函数 something() - 不带值 - 将某些内容打印为返回。我想在某些条件下使用这个函数,但我不知道如果不使用 if{} 将如何调用它。

任何帮助表示赞赏 谢谢

【问题讨论】:

  • 您已将此标记为“短路”,因此您似乎已经知道(或已获得提示)一种可能的解决方案。
  • 是否允许使用其他控制流结构?循环、switch 语句?

标签: c if-statement boolean short-circuiting


【解决方案1】:

您可以在最后使用 break 语句的同时使用循环,以确保它只执行一次,而不是循环。 For循环:

for(;(a==b);)
{
    myFunc();
    break;// to make this loop execute only once.
}

While循环:

while(a==b){
    myFunc();
    break;
 }

【讨论】:

    【解决方案2】:

    我不知道他们有什么解决方案,但由于您的函数返回int,您可以使用短路评估:

    int ignoreAnd = (oneNumber == anotherNumber) && someFunction();
    int ignoreOr  = (oneNumber != anotherNumber) || someFunction();
    

    在第一种情况下,只有当条件为真时才会调用函数;在第二种情况下,只有当条件为假时才会调用该函数。

    【讨论】:

    • 我觉得int ignore = (yourCondition == somethingElse) && someFunction(); 会更好。
    • @hacks 是的,我正在编辑以添加第二个替代方案,并添加括号以“美化”示例。谢谢!
    • 这可能是“他们”想到的解决方案,因为问题被标记为“短路”。 OP 可能没有告诉我们一些上下文。
    • @interjay 你说得对,我在第一次阅读时没有注意到标签,但既然标签就在那里,那么一定有一些关于预期解决方案的提示给学生。
    • 您介意解释一下它为什么有效吗?对我来说,您似乎根据新变量的真假为新变量赋值,但我不明白为什么它实际上调用了该函数?
    【解决方案3】:

    我会使用 switch 语句而不是 if else。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-06-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-13
      • 2017-10-06
      相关资源
      最近更新 更多