C面试中的"条件"是什么?

rya*_*yan 29 c conditional

是否可以Hello使用单打印两次condition

if  "condition"
  printf ("Hello");
else
  printf("World");
Run Code Online (Sandbox Code Playgroud)

Mat*_*ard 83

if ( printf("Hello") == 0 )
    printf ("Hello");
else
    printf ("World");
Run Code Online (Sandbox Code Playgroud)

:-)

  • 对于printf:成功时,返回写入的字符总数. (2认同)

Fra*_*ger 21

"condition" === (printf("Hello"), 0)
Run Code Online (Sandbox Code Playgroud)

真的很蹩脚:

int main() {
    if  (printf("Hello"), 0)
        printf ("Hello");
    else
        printf("World");
}
Run Code Online (Sandbox Code Playgroud)

我更喜欢使用逗号运算符,因为您不必查找返回值printf以了解条件的作用.这增加了可读性和可维护性.:-)


sud*_*03r 17

这听起来像是一些采访难题.我希望这接近你想要的.


#include <stdio.h>

int main()
{
 static int i = 0 ;
 if( i++==0 ? main(): 1)
  printf("Hello,");
 else
  printf("World\n");

 return 0 ;
}
Run Code Online (Sandbox Code Playgroud)

版画 Hello, World


Eli*_*sky 13

系好安全带:

#include <stdio.h>
#include <setjmp.h>

int main()
{
    jmp_buf env;

    if (!setjmp(env))
    {
        printf("if executed\n");
        longjmp(env, 1);
    }
    else
    {
        printf("else executed\n");
    }

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

打印:

if executed
else executed
Run Code Online (Sandbox Code Playgroud)

你是这个意思吗?我对此表示怀疑,但至少它是可能的.使用fork你也可以这样做,但分支将在不同的进程中运行.


小智 11

如果是在Unix上:

if  (fork())
    printf ("Hello");
else
    printf("World");
Run Code Online (Sandbox Code Playgroud)

不保证打印顺序的部分


小智 6

#define CONDITION (0) if (0) {} else
Run Code Online (Sandbox Code Playgroud)

或者其他一些.

如果你在面试中看到这样的问题,尽可能快地逃跑!提出这些问题的团队肯定是不健康的.

编辑 - 我忘了澄清 - 这依赖于"其他"与最接近的开放"如果"匹配,并且基于它被写为"如果条件"而不是if(条件) - 括号将使拼图无法解决的事实.


Gre*_*ill 5

if语句执行一个或另一个受控语句(printf在您的示例中都是如此).无论你使用什么condition,该片段将打印"Hello"或"World",但不会同时打印.

编辑:好的,所以这是一个技巧问题,您可以在条件中放置任何您喜欢的内容(包括调用其他任何您想要的函数).但那并不有趣.我无法相信我因为给出了正确答案而得到了降价.

  • 我也无法相信,在我看来,无论是谁做的都是小小/跛脚.所以这里有一些回复:)不应该因为没有"聪明"足以看到解决方案并发布你真正认为正确的东西而受到负面惩罚. (3认同)

sco*_*oob 5

if ( printf("Hello")==0)
Run Code Online (Sandbox Code Playgroud)

见[ http://www.coders2020.com/what-does-printf-return]

(亚光纠正了我的=,谢谢,C很远)