同时执行if和else块

Sad*_*que 6 c c++ conditional-statements

在C或C++中

if ( x )
    statement1;
else
    statement2;
Run Code Online (Sandbox Code Playgroud)

x两个陈述的执行价值是什么?

我知道我们可以if-else像这样一起执行:

if(1){
    goto ELSE;
}
else{
    ELSE:
}
Run Code Online (Sandbox Code Playgroud)

有什么办法,比如价值吗?(我认为这是不可能的.问,因为有人在争论!)

Sig*_*erm 24

对于什么值的x两个语句都将被执行?

仅在这种情况下(在类Unix系统上):

 pid_t  pid;
 pid = fork();
 if (pid == 0){
    //some code
 }
 else {
    //some code
 }
Run Code Online (Sandbox Code Playgroud)

在这种情况下,两个分支将始终同时被调用(好吧,或多或少同时),但是在不同的过程中.

我知道我们可以像这样一起执行if-else:

这个:

if(1){
    goto ELSE;
}
else{
    ELSE:
}
Run Code Online (Sandbox Code Playgroud)

是一个错误的结构.你需要使用这样的东西:

if ( condition) {
    //some code here
    ...
}
... //some other code here
Run Code Online (Sandbox Code Playgroud)

如果总是调用一个分支,那么你不需要"else".

  • +1表示使用`goto`时显然不需要的荒谬...... (4认同)
  • fork是一个很好的技巧,但是并没有真正使用"one"值,因为fork()的返回值对于一个为零而对于另一个进程为非零. (3认同)
  • 该构造只是错误的,因为在`ELSE:`之后有一个语句丢失.如果用'ELSE :;'代替它,它就变得完全合法了. (2认同)

Kon*_*lph 15

什么值的x两个语句都将被执行?

没有这样的值:要么值计算为true(某些东西!= 0),要么计算结果为false()(0).没有其他可能的值存在.

我知道我们可以像这样一起执行if-else:if(1){goto ELSE; } else {ELSE:}

这有效,但它根本不取决于if条件的价值.

  • 在没有基本上删除if的情况下评估这两个语句是不可能的,因为如果if和else都被执行也没有意义 - 这就是所谓的常规代码. (2认同)