if(!(strcmp(SQLSTATE, "02000")) break;
이문장에서 SQLSTATE값이 02000 아니면 TRUE를 반환해서 break를 만나 반복문을 빠져나가는거아닌가요?
안녕하세요.
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와 같은 커서 관련 명령어가 사용되는 위치만 정확히 파악해 두시면 됩니다.
오늘도 즐거운 하루 되세요.
"