programing

C 면접시험의 '조건'은 무엇입니까?

stoneblock 2023. 9. 21. 20:03

C 면접시험의 '조건'은 무엇입니까?

프린트가 가능할까요?Hello싱글을 두번 사용condition?

if  "condition"
  printf ("Hello");
else
  printf("World");
if ( printf("Hello") == 0 )
    printf ("Hello");
else
    printf ("World");

:-)

"condition" === (printf("Hello"), 0)

정말 썰렁하네요.

int main() {
    if  (printf("Hello"), 0)
        printf ("Hello");
    else
        printf("World");
}

저는 반환 값을 조회할 필요가 없기 때문에 쉼표 연산자를 사용하는 것을 선호합니다.printf조건이 무엇을 하는지 알기 위해서입니다.이는 가독성과 유지보수성을 높여줍니다. :-)

인터뷰 퍼즐처럼 들리네요.이것이 당신이 원하는 것에 가깝기를 바랍니다.


#include <stdio.h>

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

 return 0 ;
}

인쇄물Hello, World

안전벨트를 매십시오.

#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;
}

인쇄:

if executed
else executed

이게 당신이 말하는 건가요?의심스럽긴 하지만 적어도 그럴 수는 있어요.사용.fork당신도 할 수 있지만, 지점들은 다른 프로세스로 운영될 것입니다.

유닉스에 있는 경우:

if  (fork())
    printf ("Hello");
else
    printf("World");

물론 인쇄물의 주문 0을 보장하지는 않습니다.

#define CONDITION (0) if (0) {} else

혹은 그런 것들.

만약 여러분이 인터뷰에서 그런 질문을 본다면, 가능한 한 빨리 도망치세요!그런 질문을 하는 팀은 건강에 좋지 않을 수밖에 없습니다.

편집 - 명확히 하는 것을 잊었습니다 - 이는 "다른"이 가장 가까운 열린 "if"와 일치하는 것에 의존하며, 괄호가 퍼즐을 풀 수 없게 만드는 if (CONDITION)이 아닌 "if CONDITION"으로 쓰여 있다는 사실에 의존합니다.

if ( printf("Hello")==0)

[http://www.coders2020.com/what-does-printf-return ] 를 참조하십시오.

(matt가 내 =를 수정해 주었어요, 고마워요, C는 멀리 있어요.

ifstatement는 통제된 statement 중 하나를 실행합니다(둘 다).printf예를 들어).어떤 용도로 쓰이던 간에condition, 이 토막글은 "Hello" 또는 "World"를 인쇄하지만 둘 다 인쇄하지는 않습니다.

편집: 좋아요, 속임수 질문이고 원하는 모든 것을 조건에 넣을 수 있습니다(원하는 모든 다른 기능에 대한 호출 포함).하지만 그건 별로 흥미롭지 않아요.제가 정답을 제시했다는 이유로 다운모뎀을 받았다니 믿을 수가 없네요.

"다른" 댓글 달기 ;)

if(foo)
{
    bar();
}
//else
{
    baz();
}

반환 가치를 알지 못한 상태에서printf머리끝까지.

if (printf("Hello") && 0)
    printf("Hello");
else
    printf("World");

기본적인 답은 보통의 경우 'if' 블록과 'else' 블록의 문장을 모두 코드를 한 번의 패스로 실행하고 싶지 않거나(만약 실행한다면 왜 조건에 신경을 쓰나) 기괴한 후프를 거치지 않고 두 문장 세트를 모두 실행할 수 없다는 것입니다.

기괴한 망나니들 - 악법!

    if (condition == true)
    {
         ...stuff...
         goto Else;
    }
    else
    {
Else:
        ...more stuff...
    }

물론 이는 다음과 같은 언어에 해당하기 때문에 명백한 언어 남용입니다.

    if (condition == true)
    {
         ...stuff...
    }
    ...more stuff...

하지만 질문이 무엇을 요구하는지는 달성할 수 있습니다.조건이 참이든 거짓이든 두 블록을 모두 실행해야 한다면 상황이 좀 더 까다로워집니다.

    done_then = false;
    if (condition == true)
    {
Then:
         ...stuff...
         done_then = true;
         goto Else;
    }
    else
    {
Else:
        ...more stuff...
        if (!done_then) goto Then;
    }
int main()
{
    runIfElse(true);
    runIfElse(false);

    return 0;
}

void runIfElse(bool p)
{
    if(p)
    {
     // do if
    }
    else
    {
     // do else
    }
}
if  (true) printf ("Hello"); if (false)
    printf ("Hello");
else
    printf("World");

사랑이 없습니다.exit?

if(printf("HelloWorld"), exit(0), "ByeBye") 
    printf ("Hello");
else
    printf ("World");

그러니까... if 블록 안에서 코드를 실행하고 싶은거죠?그리고 다른 블록 안의 암호는...동일한 if/else 문?그럼...다른 것을 없애고 if에 코드를 꽂아야 합니다.

if something
  do_this
  do_that
end

other 문은 if 문이 실행되지 않는 경우에만 실행되도록 설계되어 있으며, 그 반대의 경우에는 전체 포인트입니다.이것은 이상한 질문입니다...

작동 가능:

if (printf("Hello") - strlen("Hello"))
    printf("Hello")
else
    printf("World")

에서는 합니다의 강조합니다.printf 인쇄된 문자 수입니다.

if 앞이나 뒤에 코드를 입력하면 됩니다.그 외 블록.

또는 일부 분기(모든 분기는 아니지만)에서 코드를 실행할 "if, else if, else" 블록이 있는 경우에는 별도의 함수에 코드를 넣고 각 블록 내에서 해당 함수를 호출하면 됩니다.

해결책 1:

int main(int argc, char* argv[])
{   
    if( argc == 2 || main( 2, NULL ) )
    {
        printf("Hello ");   
    }
    else
    {
        printf("World\n");
    }
    return 0;
}

솔루션 2(유닉스 및 리눅스 전용):

int main(int argc, char* argv[])
{   
    if( !fork() )
    {
        printf("Hello ");   
    }
    else
    {
        printf("World\n");
    }
    return 0;
}
 #include<stdio.h>
  int main()
{
 if(! printf("Hello"))
     printf ("Hello");
else
    printf ("World");
 return 0;
}

인쇄가 성공적으로 인쇄된 문자 수를 반환하기 때문입니다.

if(printf("Hello") == 1)
    printf("Hello")
else
    printf("World")
if (printf("Hello") < 1)
    printf("Hello");
else
    printf("World");

그렉은 이렇게 썼습니다.

조건에 무엇을 사용하든 간에 이 토막글은 "Hello" 또는 "World"를 인쇄하지만 둘 다 인쇄하지는 않습니다.

사실이 아닌데 왜 둘 다 인쇄하길 원하시는지, 용례를 찾을 수가 없네요.그것은 if 진술의 요점을 깨뜨리고 있습니다.가능한 "진짜" 해결책은 if를 전혀 사용하지 않는 것입니다.바보같은 인터뷰 질문들... :)

아주 재미있는 분들, 답변 감사합니다.if 조건에 프린트 명세서를 넣을 생각은 전혀 하지 못했을 것입니다.

자바와 동등한 기능은 다음과 같습니다.

    if ( System.out.printf("Hello").equals("") )
        System.out.printf("Hello");
    else
        System.out.printf("World");

if 다른 블록은 사용하지 마십시오.

EDIT to Comment.

그러면 코드가 두 블록 모두에 있거나 두 경우 모두에서 실행해야 하는 경우에는 블록 앞/뒤에 있음을 의미할 수 있습니다.

오늘날 가장 많이 사용되지 않는 키워드 중 하나인 고토를 사용합니다.

비어있는 다른 문으로 치팅하는 중:

if (condition)
    // do if stuff
else;
    // do else stuff

다른 문장이 마음에 들지 않는 경우, 실제로 다른 문장이 비어 있는 다른 문장입니다.

for (int ii=0; ii<2; ii++)
{
    if (condition && !ii)
        // do if stuff
    else
    {
        // do else stuff
        break;
    }
}

printf 문을 사용하지 않는 두 가지 가능한 해결책 :-

첫번째 :-

#include <stdio.h>

int
main(void)
{
  if (!stdin || (stdin = 0, main()))
    printf("hello");
  else
    printf("world");
  return 0;
}

둘째

#include<stdio.h>
void main()
{
if (1
#define else if (1) 
)
{ 
  printf("hello"); 
} 
else
 { 
    printf("world"); 
}
}

참조 : - 링크1, 링크2

if (printf("hello") & 0)
{
printf("hello");
}
else
{
printf("world");

printf의 반품 가치에 대해서는 신경 쓸 필요가 없습니다.

전처리 남용 - 적어도 청소는 포함.


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

이 질문에 대한 조건은 다음과 같습니다.

 if(printf("hello")? 0 : 1) {   }

언급URL : https://stackoverflow.com/questions/33199/whats-the-condition-in-c-interview-test