C 언어에서 세미콜론(;)을 사용하지 않고 문자열을 출력하려면, 먼저 표준 출력이 어떻게 동작하는지 그리고 왜 세미콜론이 필요한지 이해해야 합니다.
세미콜론과 printf() 함수의 원리
세미콜론은 하나의 문장(statement)이 끝났음을 컴파일러에게 알려주는 문장 종결자입니다. 우리가 흔히 사용하는 표준 출력 함수 printf()는 표준 입출력(stdio) 라이브러리에 속한 함수로, 다음과 같은 형태로 선언되어 있습니다.
int printf(const char *format , ...)
이 함수는 정수형 값을 반환하며, 두 가지 인자를 받습니다. 첫 번째 format은 화면에 출력할 문자열이고, 두 번째 ...는 해당 문자열에 따라 전달되는 추가적인 가변 인자입니다.
중요한 점은 printf()가 화면에 출력된 총 문자 수를 반환한다는 것입니다. 이 반환 값을 활용하면, 세미콜론으로 끝나는 일반적인 출력문 대신 조건문이나 반복문처럼 세미콜론이 필수가 아닌 문법 구조 안에서 문자열을 출력할 수 있습니다.
그렇다면 세미콜론 없이 문자열을 출력할 수 있는 몇 가지 방법을 살펴보겠습니다.
1. if 조건문 활용하기
if 문의 조건식 안에서 printf()를 호출하면, 함수가 실행되면서 문자열이 출력됩니다. 반환 값이 0이 아니므로 조건은 참이 되지만, 빈 블록만 남기면 추가 실행 없이 프로그램이 정상적으로 종료됩니다.
#include<stdio.h>
int main() {
if (printf("Tutorials point") )
{ }
}
2. switch 문 활용하기
switch 문도 마찬가지로 조건 표현식 자리에서 printf()를 호출하여 문자열을 출력할 수 있습니다.
#include<stdio.h>
int main() {
switch (printf("Tutorials point") )
{ }
}
3. while 반복문 활용하기
while
printf()를 사용하는 방법도 동일한 원리입니다. 단, 이 경우 반환 값이 0이 아니므로 루프 본문을 비워두더라도 무한 반복에 유의해야 하며, 실제 코딩 테스트에서는 위의 if, switch 방식이 더 안전하게 사용됩니다.
#include<stdio.h>
int main() {
while (printf("Tutorials point") )
{ }
}
4. 매크로(Macro) 활용하기
매크로를 정의해 두면 코드가 더 깔끔해집니다. 매크로 안에 printf() 호출을 넣고, 이를 조건문에서 사용하면 세미콜론 없이 출력이 가능합니다.
#include<stdio.h>
#define Out printf("Tutorials point")
int main() {
switch (Out)
{ }
}
정리
세미콜론 없이 문자열을 출력하는 핵심 아이디어는 세미콜론이 필수가 아닌 문법 구조(if, switch, while 등)의 조건식 안에서 printf()를 호출하는 것입니다. printf()가 출력 후 문자 수를 정수로 반환한다는 특성을 활용하면, 조건식이 자연스럽게 성립하면서 원하는 문자열이 화면에 출력됩니다. 이 기법은 C 언어의 함수 반환 값과 제어문 동작 방식을 깊이 이해하는 데 큰 도움이 되는 좋은 학습 예제입니다.