我有一个问题,你怎么能同时执行if语句和else语句的条件?
例如
if(?) {
printf("Hello");
} else {
printf(" world");
}
,输出应为Hello world
什么应该是condition
而不是?
?
答案 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");
}
请注意,不能同时满足if
和else
。
我的代码不从if
内的块打印,而是从条件本身打印。通过“不能同时满足if
和else
我的意思是,如果你有:
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");
然后你可以控制是否打印一个或两个(或没有)。