while문과 do while문의 차이
do while
: 처음 한번은 코드블럭 안의 코드가 무조건 동작되고 그 후에 조건식을 체크하여 true일 경우 반복하게 된다.
while
: 시작부터 조건을 체크한다.
열거체
: 숫자에 이름을 부여하여 연속된 상수에 이름을 주거나 아니면 원하는 상수값에 이름을 부여해줄 수 있다.
일종의 사용자 정의 타입을 만들어내는 것이다. 그렇기 때문에 main 바깥에 열거체를 만들어두고 main 안에서 사용할 수 있다.
enum 문의 이름이 곧 변수 타입이 될 수 있고 4 byte의 크기를 가지게 된다.
#define과 inline
#define
: 전처리기에서 처리된다.
ex)
#define FOUR 4
-> FOUR라는 이름에 4를 부여해놓고 이 FOUR를 사용한 모든 코드 부분에 컴파일 전에 숫자 4를 부여하고 컴파일한다.
Macro 함수
: #define으로 정의한 함수의 형태
ex)
#define SQUARE(X) ((x) * (x))
장점
: 일반적인 함수에 비해서 실행속도가 빠르다.
단점
: 정의하기가 어렵다. 복잡한 함수를 매크로의 형태로 정의하는데 한계가 있다.
inline 함수
: in 내부 + line 프로그램 코드라인, 프로그램 코드라인 안으로 들어가 버린 함수
ex)
inline int SQUARE(int x)
{
return x * x;
}
위의 예시의 경우 Macro 함수는 자료형에 의존적이지 않지만 inline 함수는 자료형이 정의되었기 때문에 데이터 손실이 일어날 수도 있다.
inline 함수를 template으로 만들면 자료형에 의존하지 않아 데이터의 손실이 발생하지 않는다.
Macro를 이용한 함수의 인라인화는 전처리기에서 처리되지만, inline을 이용한 함수의 인라인화는 컴파일러에 의해서 처리가 된다.
컴파일러는 함수의 인라인화가 오히려 성능에 해가 된다고 판단할 경우, 이 키워드를 무시해버리기도 한다.
또 필요한 경우 일부 함수를 임의로 인라인 처리하기도 한다.