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

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

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

不使用! 😉

是的,通过fork

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

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

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

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

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

是的,这是可能的:

 #include  #define else if (1) int main(void) { int test = 1; if (test == 1) { printf("if\n"); } else { printf("else\n"); } return 0; } #undef else 

新手注意事项:永远不要在现实生活中这样做! 相反,再考虑一下你的问题……

你可能想要的是:

 #include  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; } 

您可以通过使用带有否定条件的另一个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. } 

在这个例子中,虽然它是荒谬的,但是最后一行是在条件语句之外,所以无论是否= = 484都会执行,这在我看来与使c触发你的else块相同,无论if test是否成功。

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

 void foofunc(int n) { a = 44*n; if(a == 484) { //do something } //do something regardless of the outcome of the test. } 

我假设你试图让这种语句的两个分支执行?

 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块之外。

这在function上等同于使用GoTo,而且它让任何人都清楚。