Q & A

do while에 0을 지정하는 방식은 어디에 사용하나요?

do { } while (0)과 같이 조건식에 0을 지정하는 방식은 반복문 없이 그냥 코드를 실행하는 것과 다를 바가 없습니다. 하지만 다음과 같이 매크로 형태로 사용하기도 합니다.

#define EXAMPLE(x) \
    do { \
        if (x == 0) \
            printf("x는 0\n"); \
    } while (0)

do while이 코드를 무조건 한 번은 실행하는 특성과 코드를 괄호로 묶을 수 있는 점을 이용한 것입니다. 즉, do while을 사용하면 매크로에 여러 개의 if 조건문, for, while, do while 반복문을 넣을 수 있습니다.

switch에서 case는 몇 개까지 지정할 수 있나요?

C 언어 표준에는 1,023개로 정의되어 있습니다. 하지만 Visual Studio, GCC 모두 개수의 제한이 없고 메모리의 용량이 가득 찰 때까지 사용할 수 있습니다.

블록 안에 블록을 몇 개까지 중첩할 수 있나요?

C 언어 표준에는 127개로 정의되어 있으며 컴파일러마다 최대 개수가 달라집니다.