c언어 if문 질문

조회수 433회

if문 안에 들어 있는 조건식을 보면 가끔식 헷갈릴 때가 있습니다.

if(num%10) ~~~~

else ~~~~

num을 10으로 나누고 나머지를 못 구하면 else로 가는 건가요?.. 어떻게 이해를 해야 하나요?

  • (•́ ✖ •̀)
    알 수 없는 사용자

1 답변

  • if문에서는 괄호 안의 식이 참일 경우 if문에 해당하는 코드를, 거짓일 경우 else문에 해당하는 코드를 실행합니다.

    그런데 처음 c언어를 개발할 때에는 참 거짓에 해당하는 타입을 따로 두는 대신 0과 1로 참 거짓을 표현했습니다.

    정확한 작동 원리까지는 잘 모르겠습니다만, if문의 괄호 안의 식이 0일 경우 조건문이 거짓이라고 판단하여 아래의 코드들을 실행하지 않고, 그 외의 모든 경우에는 참으로 간주하고 아래의 코드들을 실행하는 것으로 보입니다.

    즉, 질문에서 써 주신 num%10의 값이 0일 경우에는 해당 조건문(엄밀히 따지자면 조건문은 아니지만)을 거짓으로 판단하여 else문을 실행하고, 다른 모든 경우에는 if문을 실행한다고 보시면 됩니다.

    • 아 물론 조건문을 실행할 때 에러가 발생하면 아예 if문이 실행되지 않습니다. HIAOAIH 2020.2.12 22:05
    • 작동원리는 디스어셈블을 해서 어셈블리를 읽어보면 이해가 쉽습니다. 질문의 if 구문은 0이면 else 수행 형태로 컴파일이 됩니다. test edx, edx 해서 0인지를 판별하고 0이면 else 구문으로 jump 즉 je 를 합니다.즉 c코드를 읽는 것과 반대로 0이 아니면 if 구문 수행이 아니라 0이면 else 수행으로 컴파일이 됩니다. 0이 아니면 if 구문 실행이구요. 훗날 어셈블리를 공부하시면 도움이 될 겁니다. 정영훈 2020.2.13 04:59

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)