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

C 是否可以同时执行if---else控制语句的if和else部分?,c,C,可能重复: 是否可以设置一些条件,以便if…else控制语句中的if和else部分都可以在没有任何警告或错误的情况下执行?不,这是不可能的(在同一进程中)。不,没有办法编写薛定谔if子句 您可能可以使用goto同时执行这两个命令,但它永远不会通过代码审查 请勿使用!;-) 是的,通过forking if ( fork() ) { printf("if\n"); } else { printf("else\n"); } 没有真正的用例更喜欢上面的代码,除非它是用于并行执行的。我

可能重复:


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

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

不,没有办法编写薛定谔if子句

您可能可以使用goto同时执行这两个命令,但它永远不会通过代码审查

请勿使用!;-)

是的,通过
fork
ing

if ( fork() ) {
    printf("if\n");
}
else {
    printf("else\n");
}

没有真正的用例更喜欢上面的代码,除非它是用于并行执行的。

我假设您试图让这类语句的两个分支都执行

Dim X As Boolean
X = False
If X = True Then
    ...
Else
    ...
End If
你可以让它执行使用GoTo。。。但这与良好的编程实践背道而驰

Dim X As Boolean
X = False
If X = True Then
    ...
    Goto ElseStuff
Else
    ElseStuff:
    ...
End If
相反,您应该编写单独的过程/函数来完成您希望在这两个语句中执行的行为。。。或者简单地将在所有情况下都应执行的代码置于If块的外部

这在功能上等同于使用GoTo,而且它向其他任何人表明了这一点。

是的,有可能:

#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
#包括
#定义else if(1)
内部主(空)
{
int检验=1;
如果(测试==1)
{
printf(“如果\n”);
}
其他的
{
printf(“else\n”);
}
返回0;
}
#未定义的其他
给新手的提示:在现实生活中永远不要这样做!相反,再想想你的问题

您可能想要的是:

#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;
}
#包括
内部主(空)
{
int one_条件=1;
int其他_条件=2;
如果((一个条件==1)| |(另一个条件==2))
{
printf(“如果\n”);
}
如果((一个条件!=1)| |(其他条件==2))
{
printf(“准else\n”);
}
返回0;
}

您可以使用另一个带有否定条件的if子句来替换else路径。这使您有可能用第二个条件覆盖它。

可能您误解了您的问题

如果希望代码块在不考虑条件的情况下执行,请将其从If…else语句中删除

void foofunc(int n)
{
     a = 44*n;
     if(a == 484)
     {
        //do something
     }
     else
     {
        //do something if a DOES NOT equal 484
     }

     //do something regardless of the outcome of the test.
}
在本例中,尽管很可笑,但最后一行在条件语句之外,因此无论a==484与否都将执行,在我看来,这与使c触发
else
块相同,而不管
测试是否成功

当然,else块不是强制性的,所以如果您不关心如果您的条件失败会发生什么,那么就不需要else块

void foofunc(int n)
{
     a = 44*n;
     if(a == 484)
     {
        //do something
     }

     //do something regardless of the outcome of the test.
}

我希望不会;这在我所知道的所有语言中都是否定的。这难道不能撤销if-else的目的吗?试着描述一下你的实际问题是什么,这似乎是目前寻找问题的解决方案。嗯……首先不要编写
if
条件。你为什么要这样做?很明显,这不是你想要的派对游戏,所以一定有你想要解决的问题?那是什么问题?如果你告诉我们,我们可能会给你有用的答案。聪明,但这只是混淆了问题。+1令人印象深刻。。。但我不知道这是好印象还是坏印象:)+1创造性思维;-一万亿,因为现在很多人将实施;-)这是一个巧妙的回答问题的方法(所以+1),但它不会让你感到浑身脏兮兮的吗?+1是因为思维跳出框框;问题并不要求在同一进程中执行两个分支。执行第一个分支的0.4和第二个分支的0.6。我认为这与。。。一切。。。不仅是良好的编程实践;-)其他答案表明这是可能的,使用
goto
#define else if(1)