안녕하세요, 4.6강 명백한 상수들(manifest constants) 강의를 듣고 의문이 들어 질문 남깁니다. 교수님께서 보여주신 것들은 어찌보면 manifest constants, 명백한 상수들의 몇몇 예시처럼 느껴지는데 이를 정의한다면 어떻게 말을 할 수 있을까요? #define을 통해 프로그래머들이 합의한/혹은 이미 정해져 있는(약속되어 있는)상수들 같은 거라고 이해하면 될까요? 한편으로, 말 그래도 상수는 변하지 않고 정해져 있는 값이기에 앞에 '명백한'이 붙는 게 조금 사족처럼 느껴지는데 vague constant처럼 서로 대치되는 개념이 있는 건가요? 궁금합니다!
MySpace1안의 InnerSpace라는 하위 네임스페이스에서 MySpace1의 함수인 doSomething(int a, int b)을 호출해보았습니다. InnerSpace에서 MySpace1의 함수에 접근할 수 있는 이유가 뭔가요? main에서 함수를 호출하는 원리와 같은가요? namespace MySpace1 { int doSomething(int a, int b); namespace InnerSpace { int my_function() { cout << doSomething(3, 4) << endl; return 0; } } int doSomething(int a, int b) { return a + b; } }
예를 들어 1) int i; 2) int i = 0; 이 두개가 다르더라구요... 근데 만약에 저 코드 뒤에 scanf("%d", &i); 이런식으로 i에 값을 입력해줄 예정일지라도 꼭 2번처럼 0을 넣어줘야 하나요?? 아래 예시 코드에 answer = 0을 안해주면 실행자체가 안되네요... answer가 초기화되지 않은 메모리를 쓴다고 에러가 나오고요... 비록 쓰레기값이지만 i를 선언해줬고, 그 쓰레기값을 대체하는 입력값이 뒤에 있는데도 왜 실행이 안되는거죠?? const int password = 4545; int answer; while (answer != password) { printf("enter secret code : "); scanf("%d", &answer); } printf("good!");