执行'If'以及'else'块

时间:2010-10-21 14:03:46

标签: c

  

可能重复:
  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语句中写下缺失的条件.. 是否可以通过某些条件执行两个块?请帮忙

13 个答案:

答案 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");
}