책 내용 질문하기
c언어 if문에 대해서...
도서
[2013] 정보처리기사 실기
페이지
397
조회수
173
작성일
2013-10-02
작성자
첨부파일

if(!(strcmp(SQLSTATE, "02000")) break;

이문장에서 SQLSTATE값이 02000 아니면 TRUE를 반환해서 break를 만나 반복문을 빠져나가는거아닌가요?

답변
2013-10-02 09:53:45

안녕하세요.

strcmp 함수는 두 문자열을 서로 비교하여 동일하면 0, 다르면 1을 반환하는 C언어 함수입니다.

strcmp(SQLSTATE, "02000")

위 함수의 적용 결과 SQLSTATE와 02000가 같으면, 즉 SQLSTATE의 값이 02000이면 0을 반환합니다.

여기에 NOT(부정)을 취하는 ! 연산자가 추가되어

!strcmp(SQLSTATE, "02000") 이 되면,

SQLSTATE의 값이 02000이면 0의 !인 1이 반환됩니다. 조건문 판단문에서 1은 True(참), 0은 False(거짓)을 의미하는데,

결국 SQLSTATE의 값이 02000이면 True(참)가 되어 break 문을 수행합니다. 즉 While 반복문을 빠져나가면서 처리를 종료하는 것이죠.

C 언어의 함수나 연산자를 세세하게 학습할 필요는 없습니다. 이 문제에서는 DECLARE SECTION, FETCH, OPEN, CLOSE와 같은 커서 관련 명령어가 사용되는 위치만 정확히 파악해 두시면 됩니다.

오늘도 즐거운 하루 되세요.

"
  • *
    2013-10-02 09:53:45

    안녕하세요.

    strcmp 함수는 두 문자열을 서로 비교하여 동일하면 0, 다르면 1을 반환하는 C언어 함수입니다.

    strcmp(SQLSTATE, "02000")

    위 함수의 적용 결과 SQLSTATE와 02000가 같으면, 즉 SQLSTATE의 값이 02000이면 0을 반환합니다.

    여기에 NOT(부정)을 취하는 ! 연산자가 추가되어

    !strcmp(SQLSTATE, "02000") 이 되면,

    SQLSTATE의 값이 02000이면 0의 !인 1이 반환됩니다. 조건문 판단문에서 1은 True(참), 0은 False(거짓)을 의미하는데,

    결국 SQLSTATE의 값이 02000이면 True(참)가 되어 break 문을 수행합니다. 즉 While 반복문을 빠져나가면서 처리를 종료하는 것이죠.

    C 언어의 함수나 연산자를 세세하게 학습할 필요는 없습니다. 이 문제에서는 DECLARE SECTION, FETCH, OPEN, CLOSE와 같은 커서 관련 명령어가 사용되는 위치만 정확히 파악해 두시면 됩니다.

    오늘도 즐거운 하루 되세요.

    "
· 5MB 이하의 zip, 문서, 이미지 파일만 가능합니다.
· 폭언, 욕설, 비방 등은 관리자에 의해 경고없이 삭제됩니다.