C 语言中 if-else 的全部捕获

标签 c if-statement keyword

我们都知道 C 有 if 语句,该系列的一部分是 else ifelse 语句。 else 本身检查是否没有任何值成功,如果成功,则运行后续代码。

我想知道是否有与 else 相反的东西检查是否 所有 值都成功而不是一个

假设我有这段代码:

if (someBool)
{
    someBit &= 3;
    someFunction();
}
else if (someOtherBool)
{
    someBit |= 3;
    someFunction();
}
else if (anotherBool)
{
    someBit ^= 3;
    someFunction();
}
else
{
    someOtherFunction();
}

当然,我可以缩短它:

  • a goto(哎呀,想知道我为什么不那样做)
  • 编写 if (someBool || someOtherBool || anotherBool)(杂乱且不可远程移植)。

我想写这样的东西会容易得多:

if (someBool)
    someBit &= 3;
else if (someOtherBool)
    someBit |= 3;
else if (anotherBool)
    someBit ^= 3;
all  // if all values succeed, run someFunction
    someFunction();
else
    someOtherFunction();

C有这个能力吗?

最佳答案

这可以通过使用附加变量来完成。例如

int passed = 0;

if (passed = someBool)
{
    someBit &= 3;
}
else if (passed = someOtherBool)
{
    someBit |= 3;
}
else if (passed = anotherBool)
{
    someBit ^= 3;
}

if (passed)
{
    someFunction();
}
else
{
    someOtherFunction();
}

要阻止 GCC 显示warning: suggest parenthesis around assignment value,将每个 (passed = etc) 写成 ((passed = etc)).

关于C 语言中 if-else 的全部捕获,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41435333/

相关文章:

c - 在 MPI_Recv 之后使用一个空的条件 while 循环是否合理?

ios - Swift:UITextField IBAction - EditingChanged - 按钮保持启用状态,即使文本字段值已更改?

seo - 什么是关键词堆砌?

Java 相当于数据库 IN

java - 使用关键字 "this"访问实例函数或成员是一种好习惯吗?

c - 错误 C2102 : '&' requires l-value

编译器警告 "differ in signedness"

c - C 函数的问题,特别是计算方面的问题

python - 在 python 中我应该使用 try 还是 If ,为什么?

php - 停止为PHP提供错误number_format