C++ 표준에 따르면 return 0
이 반환 문이 주어지지 않으면 main()
끝에 삽입됩니다. 그러나 나는 종종 최근에 작성된 표준 준수 C++ 코드가 main()
의 끝에 0을 명시 적으로 반환하는 것을 보았습니다. 컴파일러가 자동으로 수행하는 경우 어떤 이유로 명시 적으로 0을 반환하겠습니까?ISO C++에서 main에서 0을 반환하는 이유는 무엇입니까?
답변
코드의 동작을 명시 적으로 만듭니다.
명시 적으로 말하면 명시 적으로 사용자의 의도를 나타내고 있습니다.
무언가에 의존함으로써 2 가지 경우를 가질 수 있습니다. 1) 의도 했었습니다. 2) 잊어 버렸습니다.
그런데 왜 그 두 경우가 중요할까요? * "아무런 차이가없는 차이점은 아무런 차이가 없습니다."* – gnovice
@gnovice : # 2 "잊어 버렸습니다"라고 입력하면 대신 1의 반환 값을 넣었을 것입니다. –
값 1은 일반적으로 오류 또는 비정상 종료를 나타냅니다. OP는 구체적으로 'return 0'대 'return 0'(즉, 성공적인 반환)을 묻습니다. 오류를 처리하는 것을 잊어 버리는 것은 별개의 문제입니다. 만약 명시적인'return 0'이없는 코드를 본다면, 나는 그들이 "오류에 대해 완전히 잊었다"고 즉시 생각하지 않을 것입니다. – gnovice
다른 프로그래머에게도 return 문을 입력하는 것을 잊지 않았 음을 분명히합니다.
일부 컴파일러는 아무 것도 반환하지 않으면 경고 메시지를 표시 할 수 있습니다.
함수가 반환하는 것을 명시 적으로 표시합니다.
많은 프로그래머는이 규칙에 대해 모른다.
오해. 단순히 이유가 없으며 누군가가 return 0;
을 추가한다는 것을 모르는 경우.
일부 사람들은 모르기 때문에. 반드시 코드를 작성한 사람 (물론 가능하지만)은 아니지만 일부 사람들이 있습니다. 명시 적으로 return 0;
을 쓰는 것이 좋습니다.
또한 관습에 따라 언어를보다 균일하게 만들어 주며, 최소한 예술적으로 중요합니다.
저는 종종 직선 C를위한 코드를 컴파일하기 때문에 자주합니다. 따라서 버릇이 없거나 내가 만든 코드 조각이 main()
에서 왔기 때문에 명시 적으로 반환됩니다. 제거 할 이유가 없으므로 대개 그대로 유지됩니다.
그런 다음 다시 입력 할 필요가 없을 때가 있습니다 (어쩌면 내가 필요로하지 않는다는 것을 깨달았거나) 다른 스 니펫을 사용했을 수도 있습니다.
- 1. SetWindowsHookEx가 0을 반환하는 이유는 무엇입니까?
- 2. 이 함수가 항상 0을 반환하는 이유는 무엇입니까?
- 3. CreateDialog가 실패했으나 GetLastError가 0을 반환하는 이유는 무엇입니까?
- 4. Calendar.get (Calendar.MONTH)가 0을 반환하는 이유는 무엇입니까?
- 5. waveInGetNumDevs가 항상 0을 반환하는 이유는 무엇입니까?
- 6. SSL_read가 1,400 바이트를 읽은 후 SSL_pending이 0을 반환하는 이유는 무엇입니까?
- 7. PHP CLI에서 getmypid()가 pid로 0을 반환하는 이유는 무엇입니까?
- 8. GetSafeHwnd()가 ActiveX 컨트롤에서 0을 반환하는 이유는 무엇입니까?
- 9. 서비스에서 호출 할 때 GetWindowThreadProcessId가 0을 반환하는 이유는 무엇입니까?
- 10. JQuery - 슬라이드 - outerWidth()가 0을 반환하는 이유는 무엇입니까? 해결
- 11. C에서 float에 0을 할당하십시오.
- 12. Win32_PageFileUsage CurrentUsage에 대해 0을 반환하는 WMI 호출
- 13. main에서 읽지 않은 비 정적 변수에 문제가있는 이유는 무엇입니까?
- 14. Doctype을 사용하여 scrollTop이 0을 반환하도록하는 이유는 무엇입니까?
- 15. AlphaBlend가 'false'를 반환하는 이유는 무엇입니까
- 16. real_connect가 null을 반환하는 이유는 무엇입니까?
- 17. BitmapFactory.decodeFile이 null을 반환하는 이유는 무엇입니까?
- 18. Type.GetElementType이 null을 반환하는 이유는 무엇입니까?
- 19. NSDateFormatter가 nil을 반환하는 이유는 무엇입니까?
- 20. GetCurrentProcess가 -1을 반환하는 이유는 무엇입니까?
- 21. Exception.fillInStackTrace가 Throwable을 반환하는 이유는 무엇입니까?
- 22. corrcoef가 매트릭스를 반환하는 이유는 무엇입니까?
- 23. NSDateFormatter가 nil을 반환하는 이유는 무엇입니까?
- 24. ItemContainerGenerator가 null을 반환하는 이유는 무엇입니까?
- 25. NSMutableArray가 nill을 반환하는 이유는 무엇입니까?
- 26. C에서 느린 디스크 이미지 생성 (iso 9660)
- 27. C에서 함수에 2D 배열을 반환하는 방법은 무엇입니까?
- 28. HWND가 잘못된 경우 0을 반환하는 MessageBox
- 29. lseek의() 다음에 0을 반환하는 새로운 오픈()
- 30. 하나의 레코드를 업데이트해야하더라도 mysql_affected_rows가 0을 반환하는 이유
아, main()의 신비. 확실히 좋은 프로그래머는이 규칙이 그가 쓰는 다른 코드의 99.99 %와 다른 main()을 처리하도록해야한다고 가정하지 않기 때문입니다. 그녀는 포함했다. –
흠, 그렇게 생각하지 않았어.C와 같은 함수 반환 형식을 생략하는 것과 비슷합니다. 나는 항상 그것이 일종의 응달이되었다고 생각했다. – Maulrus
원칙적으로 0이 아닌 유효한 반환 값이 아닌 한'return 0; '을 쓰지 않습니다. 그것은 나를 반역자로 느끼게합니다. –