minjoonist   4년 전

평소에 궁금했는데 사소해서 안 물어본 질문들입니다. 하나라도 아시면 답변 달아주세요.

1. cin.tie(0);은 하는데 cout.tie(0);는 왜 안하나요?

2. ios와 ios_base는 같은 건가요?

3. 찾아보니 ffread 나 mmap 등의 입력방법이 가장 빠르다는데 왜 C++에서는 이걸 기본 입력 방법으로 안 쓰는 걸까요?

4. C(Clang), C++(Clang) 은 일반 C 와 C++ 랑 뭐가 다르나요?

5. 많은 문제에서 결과를 1,000,000,007로 MOD 연산을 해서 출력하라고 하는데 하필 이 숫자인 이유가 있나요?

6. return 0; 을 하나 마나 아무 결과에 변함이 없는데 왜 쓰나요?

7. 언제 한번 배열 인댁스를 넘어갔는데 맞았습니다가 떴는데 이게 어떻게 가능한 일이죠?

8. 전역변수랑 main()안에서 선언하는 변수의 차이가 뭔가요?

dyk777   4년 전

1) cout.tie(0)는 아무런 일도 하지 않는 문장으로 알고 있습니다.

2) 같지 않은 것으로 알고 있습니다만, 맞는지는 잘 모르겠군요. 자세한 것은 레퍼런스를 찾아보는게 낫겠습니다.

3) 일반인 수준에서는 보통 정수나 문자열을 입력받는 경우가 많지, 메모리채로 가져와서 파싱하는 경우가 드물기 때문이라고 생각합니다.

4) 컴파일러가 다른 것으로 알고 있습니다.

5) 10^9보다 큰 소수 중 가장 작은 것으로 알고 있습니다. 모듈러 연산에서 소수는 중요한 역할을 합니다.

6) BOJ에서는 main함수가 0을 반환하지 않는 경우 런타임 에러가 발생합니다. 원칙적으로 int로 선언된 함수들은 정수값을 반환해야 합니다.

7) 할당된 범위 밖을 벗어나는 것은 UB로, 어떤 일이 발생할 지 모릅니다. 운이 좋다면 ac를 받을 수도 있겠죠.

8) 전역변수는 메모리상의 힙 영역에, main() 내에 선언하는 변수는 스택 영역에 자리합니다. 추가적으로, c계열에서 전역 변수는 0으로 초기화가 됩니다만, main()내에 선언한 변수는 직접 초기화를 해 주어야 합니다.

minjoonist   4년 전

빠른 답변 감사합니다!! 이런걸 도데체 어디서 알았는지..

jh05013   4년 전

main 함수는 return이 없으면 자동으로 0을 반환합니다. 단, main 함수만 그렇습니다. 저도 return 0을 (중간에 종료하려는 게 아닌 이상) 안 씁니다.

댓글을 작성하려면 로그인해야 합니다.