23-9심사문제
, 박 정민님이 작성문의한 코드는 삭제하고, 내용과 관련된 부분만 남겨 놓습니다.
scanf("%d",&a);
소스코드 이렇게 입력했는데 패스가안되요.
dev c로 컴파일해도 오류안나고 출력결과 나오는데 뭐가 틀렸나요??
(도장_ 관리자에 의해 편집됨 - 원문 제출일 2018년 5월 16일, 수요일, 오후 5:33 )
회신: 23-9심사문제
, 도장_ 관리자님이 작성Dev-C++에서는 컴파일러 경고가 제대로 표시되지 않는 것 같습니다.
윈도에서는 cygwin을 설치해서 명령 프롬프트에서 gcc를 사용하는 게 좋겠습니다. 아니면 Visual Studio를 사용하세요.
리눅스/맥에서는 gcc나 clang을 바로 사용할 수 있습니다.
-Wall 옵션만 사용해도 다음과 같은 오류가 발생합니다.
gcc -Wall 23.9.c -o 23.9
23.9.c: In function ‘main’:
23.9.c:8:5: warning: format ‘%d’ expects argument of type ‘int *’, but argument 2 has type ‘long long unsigned int *’ [-Wformat]
scanf의 서식(format)에 %d를 사용한 것이 잘못되었다는 뜻입니다. unsigned long long에 써야 하는 서식 지정자를 써야 합니다.
Dev-C++에서 확인해본 바로는 컴파일러 경고도 없고, 오류도 없이 실행되지만, 복잡한 프로그램에서는 결국 알 수 없는 버그를 발생시키게 되는 잘못된 코드입니다.
심사에서는 컴파일러 경고가 발생하는 코드는 통과시키지 않습니다.