답변 4
6
안녕하세요? 뒤에 설명이 나올텐데, C언어는 프로그램이 매우 엄격해야 하는 경우에도 많이 사용되는 언어라서 최근에 점점 컴파일러도 엄격해지는 경향을 보이고 있습니다. 예를 들어서 우주선 같은 하드웨어를 제어하는 프로그램을 작성한다면 하드웨어에 문제가 있는 경우에는 즉시 문제가 있다는 것을 보고하고 종료해야겠죠. 그래서 scanf도 반환값을 받아서 문제가 있는지 확인하는 코드를 꼭 작성하도록 유도하기 위해서 경고가 뜨는 것입니다. flag로 받아서 확인하는 예제는 뒤에 나옵니다만, 표준 입출력같이 간단한 경우에는 워닝을 꺼버리는 방법도 있습니다. 워닝 끄는 방법도 뒤에 나옵니다만 검색하셔도 쉽게 찾으실 수 있을겁니다.
* 위의 김진범님 답변에 '쓸데 없는 메모리 사용'이라는 얘기가 나오는 이유는 반환값을 받은 후에 문제가 있는지 검사를 하는데에 쓰지 않아서 그렇습니다. 원래는 입력이 잘 들어왔는지 매번 확인해주는 것이 원칙입니다.
0
0
0
제가 답할 수 있는 입장이 되는지 모르겠다만 저도 불편해서 찾아보니까 C6031같은경우 scanf의 반환값을 대입하거나 사용하지 않아서 오류가 뜬다고 하더라구요. 실행하고 사용하는데 문제가 없으면 무시해도 된다고 하나 없애고 싶으면 scanf 함수로 입력받는 코드 자체를 또 하나의 변수를 사용하여 대입하면 사라지긴하나 쓸데없는 메모리 사용이라고 합니다. 도움되셨으면 좋겠습니다. 근데 아마 조교분이나 교수님이 더 정확한 답변을 해주실 수 있을 것 같습니다ㅠ