是否可以设置一些条件,以便在没有任何警告或错误的情况下执行if?else控制语句中的if和else部分?
答案 0 :(得分:26)
请勿使用! ; - )强>
是的,fork
。
if ( fork() ) {
printf("if\n");
}
else {
printf("else\n");
}
除非用于并行执行,否则没有真正的用例来优先使用上述代码。
答案 1 :(得分:9)
不,没有办法写一个Schrödingerif子句。
您可以使用goto执行这两者,但它永远不会通过代码审查。
答案 2 :(得分: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
新手的说明:永远不要在现实生活中这样做!相反,再考虑一下你的问题......
你可能想要的是:
#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;
}
您可以通过使用带有否定条件的另一个if子句来替换else路径。这使您可以在第二个条件下覆盖它。
答案 3 :(得分:4)
不,这是不可能的(在同一个过程中)。
答案 4 :(得分:2)
也许你误解了你的问题。
如果您想要执行代码块而不考虑条件,请将其从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
测试成功。
当然,其他阻止不是强制性的,所以如果您不关心如果您的情况失败会发生什么,那么就是没有其他阻止。
void foofunc(int n)
{
a = 44*n;
if(a == 484)
{
//do something
}
//do something regardless of the outcome of the test.
}
答案 5 :(得分:1)
我假设你试图让这种语句的两个分支都执行?
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,而且它让任何人都清楚。