是否有可能同时执行if - else控制语句的if和else部分?

Par*_*ita 5 c

可能重复:
关于If-Else在C++或C中同时执行的愚蠢问题

是否可以设置一些条件,以便if和else控制语句中的if和else部分可以在没有任何警告或错误的情况下执行?

Ala*_*avi 26

不使用!;-)

是的,通过fork.

if ( fork() ) {
    printf("if\n");
}
else {
    printf("else\n");
}
Run Code Online (Sandbox Code Playgroud)

除非用于并行执行,否则没有真正的用例来优先使用上述代码.

  • +1令人印象深刻...但我不知道这是一个好的或坏的印象:) (3认同)
  • 聪明,但这只会混淆问题. (2认同)
  • 这是一个巧妙的方式来回答这个问题(所以+1),但它不会让你感到肮脏​​吗? (2认同)

Joh*_*lin 9

不,没有办法写一个Schrödingerif子句.

您可以使用goto执行这两者,但它永远不会通过代码审查.

  • 施罗丁格+1:D (2认同)

gro*_*ndi 5

是的,有可能:

#include <stdio.h>

#define else if (1)
int main(void)
{
    int test = 1;

    if (test == 1)
    {
        printf("if\n");
    }
    else
    {
        printf("else\n");
    }

    return 0;
}
#undef else
Run Code Online (Sandbox Code Playgroud)

给新手的提示:切勿在现实生活中这样做!相反,请再考虑您的问题...

您可能想要的是:

#include <stdio.h>

int main(void)
{
    int one_condition = 1;
    int other_condition = 2;

    if ((one_condition == 1) || (other_condition == 2))
    {
        printf("if\n");
    }

    if ((one_condition != 1) || (other_condition == 2))
    {
        printf("quasi-else\n");
    }

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

您可以通过使用另一个条件为否定的if子句来替换else-path。这使您可以用第二个条件覆盖它。


sep*_*p2k 4

不,这是不可能的(在同一进程内)。