접미사가 없는 정수: 필요한 경우 더 큰 유형으로 승격
원래 쿼리에서는 100억 회까지 반복하면 예기치 않은 동작이 발생하는 이유를 탐색했습니다. 한 가지 의혹은 접미사가 없는 정수 리터럴이 일반적인 int 유형으로 기본 설정되지 않을 수 있다는 것입니다.
C와 C 모두에서 이러한 리터럴은 자동으로 적합한 정수 유형으로 승격됩니다. 이렇게 하면 해당 값이 사용 가능한 정수 유형 중 하나 이상의 제한 내에서 표현될 수 있습니다.
C 및 C 표준
C 11 표준( [lex.icon] ¶2) 및 C99 표준(§6.4.4.1)에서는 접미사가 없는 정수 리터럴에 가장 작은 유형이 제공됩니다. 해당 값을 수용할 수 있는 목록은 다음과 같습니다.
100억 개의 경우 , 이 정수 상수는 long int(또는 long int가 다음과 같이 정의된 경우 long long int)로 분류됩니다. 32비트).
지나치게 큰 리터럴에 대한 컴파일 오류
C99와 C 11 모두 허용되는 모든 정수 유형에 대해 표현 가능한 범위를 초과하는 리터럴은 컴파일 오류. 그러나 일부 컴파일러는 초과 숫자를 자동으로 자르거나 삭제하는 등 비표준 방식으로 이를 처리할 수 있습니다.
위 내용은 C 및 C의 부호 없는 정수 리터럴이 더 큰 유형으로 승격되는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!