날짜의 월을 숫자로 입력하면 거기에 맞는 이름을 출력하는 방법을 고안할 때,
좋지 않은 예
int를 input, string을 output으로 하는 함수를 만들어
함수 내에서 if - else if 구문으로 처리한다
안좋은 이유 - 1에 Jan을 2에 Feb을 출력하는데, 여기에는 코드의 논리와는 상관없는 기능이 들어감..
좋은 예
string monthName[] = { "Jan", "Feb", ... , "Dec" } 처럼 배열을만들면, 배열의 원소에 접근하듯 O(1)으로 바로 사용 가능함.
for 문을 쓸 때도
for(int i = 1; i <= num; i++) X
for(int i = 0; i < num; i++) O
이렇게 써 왔던 것 처럼
a <= n < b인 범위를 표현하는 반열린구간 표현에 익숙해지자.
C++ iterator에서도 begin()은 첫 원소를, end()는 마지막 + 1 의 원소를 지칭하며, 위와 동일한 맥락에서 기인한다!
if(b & 1 == 0)
// & 연산자는 비트 and 연산자
언제 True가 될까? -> 항상 False다!
if(b &(1==0));과 같이 처리되기 때문에, 1==0 은 false(=0)이 되고 0과 비트연산자 &의 결과는 항상 0일 수 밖에 없다.
즉, 비트연산자는 다른 이항 연산자보다 우선순위가 낮다!