什么是同时执行if和else条件的逻辑

时间:2014-03-05 14:39:00

标签: c++ c

我有一个问题,你怎么能同时执行if语句和else语句的条件?

例如

if(?) {
    printf("Hello");
} else {
    printf(" world");
}

,输出应为Hello world

什么应该是condition而不是?

6 个答案:

答案 0 :(得分:4)

另一种方法是分叉你的进程,一个线程将打印“Hello”而另一个将打印“world”。但是不能保证打印不会是“worldHello”而是

 #include <stdio.h>


 main(){
    if(fork()) {
        printf("Hello");
    } else {
        printf(" world");
    }
 }

答案 1 :(得分:3)

没有逻辑。你不能这样做。

C11 6.8.4.1 if语句:

  

在两种形式中,如果表达式比较不等于0,则执行第一个子语句。   在else形式中,如果表达式比较等于0,则执行第二个子语句。如果通过标签到达第一个子语句,则第二个子语句不是   执行。

答案 2 :(得分:2)

您可以使用预编译器重新定义语言来执行此操作

 #include <stdio.h>
 main(){
 #define if(x)
 #define else

    if(abc) {
        printf("Hello");
    } else {
        printf(" world");
    }
 #undef if
 #undef else
 }

答案 3 :(得分:1)

如果你的目的是从这段代码中打印“Hello world”,你可以做到这一点:

if(!printf("Hello")) {
    printf("Hello"); //not reachable 
}
else {
    printf(" world");
}

请注意,不能同时满足ifelse


我的代码if内的块打印,而是从条件本身打印。通过“不能同时满足ifelse我的意思是,如果你有:

if(something) {
   doSomething();
} else {
   doSomethingElse();
}

doSomething()doSomethingElse()无法执行。

答案 4 :(得分:1)

if(true) {
    printf("Hello");
    goto world:
} else {
    world:
    printf(" world");
}

答案 5 :(得分:0)

这样做的合理方法是解决这个问题,例如:

if (condition1)
  print("Hello");

if (condition2)
  print(" world");

然后你可以控制是否打印一个或两个(或没有)。