可能重复:
Stupid Question Regarding If-Else's Simultaneous Execution in C++ or C
Is it possble to execute both if and else part of an if — else control statement ?
大家好.. 我在这样的采访中遇到了一个问题,我无法回答。 考虑以下代码块。 假设必要的头文件。
if(.......)
{
printf("hello");
}
else
{
printf("world");
}
不移动/添加任何代码&不使用额外的打印语句将输出作为“Hello world”..你必须在if语句中写下缺失的条件.. 是否可以通过某些条件执行两个块?请帮忙
答案 0 :(得分:36)
这将有效
if(schrodingers_cat_is_dead())
{
printf("hello");
}
else
{
printf("world");
}
不幸的是,一旦你看到输出,它不仅会陷入只产生“你好”或“世界”的状态,而且有50%的可能你会杀死一只猫。
答案 1 :(得分:34)
试试fork()
! (然后加入)。这是我所知道的唯一涉及量子力学的特征。
fork()
一次返回两个不同的值,只有Schrödinger的猫才有。
注意:在评论中,Donal Fellows建议:
使用
,您将获得更可靠的行为!vfork()
答案 2 :(得分:16)
如果您可以将宏定义作为该条件的“部分”......
if (1
#define else if (1)
)
{
printf("hello");
}
else
{
printf("world");
}
然后该代码将确实打印“helloworld
”。虽然这是一个可怕的,肮脏的把戏;我的灵魂可能因提到它而陷入困境!
答案 3 :(得分:7)
这取决于问题的确切措辞。正如您所描述的那样,问题不会要求您执行if语句的两个分支。它要求您插入一个条件,导致打印“hello world”而不更改任何其他内容。
如果您完全自由地处理了这种情况,您可以使用此解决方案:
if(printf("hello ") == -1)
{
printf("hello");
}
else
{
printf("world");
}
但是,解决方案在条件中使用“printf”,这是由您给出的规则之一排除的。我不清楚的是,printf禁令是否也适用于你所写的条件。
注意:编辑答案以反映评论。最初的答案忽略了禁止印刷声明。
答案 4 :(得分:3)
你可以,但这可能是不好的做法。似乎面试官正在测试您对该语言的了解。用gcc 4.1.2构建。
#include <stdio.h>
int main() {
if(!printf("hello ")) {
printf("hello");
} else {
printf("world");
}
return 0;
}
答案 5 :(得分:3)
有一种可能的方法,不建议使用。
if(check==true)
{
printf("dont do this");
goto condition1;
}
else
{
condition1: ////this is crazy
printf("Dont do this ever");
}
答案 6 :(得分:0)
不,这是不可能的。第一个块或else块将被执行;这是if
陈述的性质。
答案 7 :(得分:0)
没有办法在没有利用奇怪的东西的情况下执行if / else的两个分支。如果条件为真,那么else将不会执行,反之亦然。
他们完全相互排斥。
答案 8 :(得分:0)
不是没有再次迭代它。我不认为你可以在if语句中做任何Duff设备,比如疯狂。我想你可以使用goto,你只需写下条件即可。
答案 9 :(得分:0)
在调试器中,您可以单步执行if块,然后将执行移动到else块来执行,但这只是对我认为是一个愚蠢问题的愚蠢回答。
答案 10 :(得分:0)
我认为最简单的方法是:
//if(.......)
{
printf("hello");
}
//else
{
printf("world");
}
答案 11 :(得分:0)
这不会起作用吗?
if (!printf("hello")){
printf("hello");
}
else{
printf(" world");
}
答案 12 :(得分:-1)
if()
{
printf("hello");
goto Found;
}
else
{
Found: printf("world");
}