본문 바로가기
프로그래밍언어/C언어[Error]

[C언어][Error] 022. invalid suffix on literal; C requires ‘int’ – 숫자 리터럴에 잘못된 접미사 사용

by about_IT 2025. 4. 24.

이 오류는 숫자 리터럴에 C언어에서 허용되지 않는 접미사(suffix)를 붙였을 때 발생합니다. C언어는 정수 리터럴과 실수 리터럴에 사용할 수 있는 접미사를 엄격하게 제한하며, 잘못된 문자가 붙으면 문법 오류로 처리됩니다.

 

예를 들어, 100z 와 같은 표현은 z가 유효한 접미사가 아니기 때문에 이 오류가 발생합니다. 정수 리터럴에는 u, l, ul 등의 조합만 사용할 수 있으며, 대문자와 소문자도 구분됩니다.

 


● 오류 예제

#include <stdio.h>

int main() {
    int x = 100z;  // 오류: 잘못된 접미사 z
    printf("%d\n", x);
    return 0;
}

컴파일러는 다음과 같은 오류 메시지를 출력합니다.

error: invalid suffix "z" on integer constant

 


● 해결 방법

리터럴에 사용할 수 있는 정식 접미사만 사용해야 합니다. C언어에서 허용되는 주요 접미사는 다음과 같습니다.

  • u 또는 U : unsigned 정수
  • l 또는 L : long 정수
  • ul , UL, llu, ULL 등
#include <stdio.h>

int main() {
    unsigned int x = 100u;  // 올바른 접미사 사용
    printf("%u\n", x);
    return 0;
}

출력 결과:

100

 


● 실전 팁

  • 숫자 리터럴에 임의의 문자나 단위를 붙이지 마세요. (예: m, z, w 등)
  • 정수형에 u, l, ul 등을 붙일 때는 순서와 대소문자 규칙도 정확히 지켜야 합니다.
  • 리터럴의 타입을 변경하려면 캐스팅 연산을 사용하는 것도 좋은 방법입니다.

 

숫자 리터럴의 접미사는 컴파일러가 타입을 판단하는 데 중요한 역할을 하므로, 정확한 표기법을 숙지하고 사용하는 것이 중요합니다. 임의의 문자를 붙이는 실수는 피하도록 합시다.