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는 멀리 있어요.
그if
statement는 통제된 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");
}
}
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
'programing' 카테고리의 다른 글
C 프로그래밍 및 TDD (0) | 2023.09.21 |
---|---|
부트스트랩이 있는 스크롤 가능한 메뉴 - 용기를 확장하지 않아야 할 때 확장하는 메뉴 (0) | 2023.09.21 |
디렌트 구조의 구성원 (0) | 2023.09.21 |
"docker composition"과 "docker composition"의 차이 (0) | 2023.09.21 |
워드프레스 관리자:Custom Post Type(사용자 지정 게시 유형)을 상위 메뉴의 하위 메뉴로 배치할 때 상위 메뉴 링크가 CPT에 의해 재정의됩니다. (0) | 2023.09.21 |