Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 执行';如果';以及';其他';块_C - Fatal编程技术网

C 执行';如果';以及';其他';块

C 执行';如果';以及';其他';块,c,C,可能的重复项: 大家好。。 在这样的面试中,我有一个问题无法回答。 考虑下面的代码块。 假设有必要的头文件 if(.......) { printf("hello"); } else { printf("world"); } 不移动/添加任何代码,不使用额外的打印语句,输出为“Hello world”。您必须在if语句中写入缺少的条件。。 是否可以在某些条件下执行两个块??请帮助试试看!(然后加入)。这是我所知道的涉及量子力学的唯一特征 fork()一次返回两个不同的值,这

可能的重复项:

大家好。。 在这样的面试中,我有一个问题无法回答。 考虑下面的代码块。 假设有必要的头文件

if(.......)
{
    printf("hello");
}
else
{
    printf("world");
}
不移动/添加任何代码,不使用额外的打印语句,输出为“Hello world”。您必须在if语句中写入缺少的条件。。 是否可以在某些条件下执行两个块??请帮助

试试看!(然后加入)。这是我所知道的涉及量子力学的唯一特征

fork()
一次返回两个不同的值,这只有薛定谔猫才能实现

注意:在评论中,多纳尔·费罗斯建议:


你的行为会更可靠


不,不可能。将执行第一个块或else块;这就是
if
语句的本质。

如果不对if/else的两个分支进行奇怪的利用,就无法执行它们。如果条件为true,则不会执行else,反之亦然


它们是绝对互斥的。

必须再次重复。我不认为你能在if语句中做任何像疯狂这样的愚蠢的事情。我想你可以使用goto,你可以说,只需编写条件。

在调试器中,你可以单步通过if块,然后将执行移到else块执行,但这只是一个愚蠢的答案,在我看来,这是一个愚蠢的问题。

你可以,但这可能是一个糟糕的做法。似乎面试官在测试你的语言知识。使用gcc 4.1.2构建

#include <stdio.h>

int main() {
  if(!printf("hello ")) {
    printf("hello");
  } else {
    printf("world");
  }

  return 0;
}
#包括
int main(){
如果(!printf(“hello”)){
printf(“你好”);
}否则{
printf(“世界”);
}
返回0;
}

有一种可能的方法,不推荐使用

if(check==true)
{
 printf("dont do this");
 goto condition1;
}
else
{
 condition1: ////this is crazy
 printf("Dont do this ever");
}
你可以试试:

if()
{
printf("hello");
goto Found;
}
else
{
Found: printf("world");
}

如果可以将宏定义作为该条件的“一部分”

if (1
#define else if (1)
)
{
    printf("hello");
}
else
{
    printf("world");
}

然后,该代码将确实打印“
helloworld
”。这是一个可怕的,肮脏的把戏;提起这件事,我的灵魂可能有麻烦了

我认为最简单的方法是:

//if(.......)
{
    printf("hello");
}
//else
{
    printf("world");
}

这取决于问题的确切措辞。正如您所描述的,问题并不要求您同时执行if语句的两个分支。它要求您插入一个条件,以打印“hello world”,而不更改任何其他内容

如果您在条件中有完全的自由,您可以使用此解决方案:

 if(printf("hello ") == -1)
 {
     printf("hello");
 }
 else
 {
     printf("world");
 }
但是,该解决方案在条件中使用“printf”,这被您给出的规则之一排除。我不清楚的是printf禁令是否也适用于您在条件中所写的内容

注意:编辑答案以反映评论。原始答案忽略了禁止打印语句的规定。

这不管用吗

if (!printf("hello")){
   printf("hello");
}
else{
   printf(" world");
}
这会奏效的

if(schrodingers_cat_is_dead())
{
    printf("hello");
}
else
{
    printf("world");
}

不幸的是,一旦你看到输出,它不仅会崩溃到只生成“hello”或“world”的状态,而且有50%的可能性你会杀了一只猫。

…希望它们按正确的顺序打印。这不是很糟糕的编程实践吗?为什么他们希望有人在面试中知道(更不用说知道了)/@汤森:这是一个很棒的代码,这样你可以让父亲做一件事,而儿子做另一件事。如果if为if(0==fork()),它将为不同的线程执行不同的操作,这是非常可取的,例如,如果您希望执行外部进程,并让父进程等待它完成。您将通过
获得更可靠的行为!vWork()
甚至更好:
如果(!vWork()| | sleep(100))
应该确保扭曲思维的正确顺序+1,但是它没有通过“不移动/添加任何代码”约束?你作弊了!你不可能在
{}
块中放入任何东西,根据问题:)你是对的,我作弊了,我没有汤。这个问题很有趣insane@Steve关于
setjump()
有一个很好的建议。他们可能期待着那个解决方案。我不确定,但是分叉过程会打印到同一个控制台吗?这不是其他问题的重复。这篇评论只是把问题的标题弄错了。它并不要求您执行if和else,它只是要求您插入一个生成请求输出的条件。我的答案如下。@Larry:我认为这是一个错误,问题允许你回答。它说,“不使用额外的打印语句”,我将其包括对
printf
的调用,无论它们是语句还是表达式。此外,文本“是否可以根据某些条件执行两个块”也是一个重复。与此相反,这是一个完全不同的问题,请求的输出是“Hello world”(注意大写字母H和空格),这表明不应该执行第一个块。另外,
fork()
解决方案不会对块进行排序,它们可以按顺序运行,也可以同时运行。我不能再回答这个问题了,但我想!!如果你滥用一些很少使用的C语法,你可以不用vWork来完成<代码>如果(fork()?(sleep(1),0):1{。睡眠确保了正确的顺序。如果(fork(){printf(“hello”)}其他{printf(“world”)}是的,那也很好:)别忘了
#取消定义它。我想你可以定义其他
。它只会限定
printf(“world”)
。这就行了:
如果(1){printf(“hello”);}if(1){printf(“world”)}
谢谢多纳尔……没关系……但这毫无意义……尽管它很好地实现了预期目标。让我们说“不择手段!!”@Prashant:Sense?!你这里有很深的巫毒黑客把戏,不是很好的结构化编程。:-)我喜欢这一个。这是意料之中的。
否则
没有
如果
,就不可能存在。这个问题说明了
。你必须编写