숫자 리터럴의 ULL 접미사
다음과 같은 코드를 실행했습니다.
line += addr & 0x3fULL;
분명히 'U'와 'L'은 16 진수가 아닙니다. 16 진수 리터럴 끝에있는 'ULL'이 "Unsigned Long Long"을 의미한다고 생각합니다. 맞습니까? (이런 종류의 것은 Google에 매우 어렵습니다) 그렇다면 이것이 숫자에 대한 일종의 접미사 수정 자입니까?
로부터 gcc
수동 :
ISO C99는 최소 64 비트 너비의 정수에 대한 데이터 유형을 지원하며 확장으로 GCC는 C90 모드 및 C ++에서이를 지원합니다. 간단하게 쓰기
long long int
부호있는 정수에 대한, 또는unsigned long long int
부호없는 정수. 유형의 정수 상수를 만들려면 정수long long int
에 접미사LL
를 추가합니다 . 유형의 정수 상수를 만들려면 정수unsigned long long int
에 접미사ULL
를 추가합니다 .
네, 맞습니다.
0x
접두사는 16 진수 리터럴이됩니다.ULL
접미사는 유형을 만듭니다unsigned long long
.
현재 답변이 크로스 플랫폼 소스에서 인용되지 않는다는 것을 알고 있기 때문에 새로운 답변을 제시하고 있습니다. C ++ 11 개 표준 리터 지시와 그 / 및 / 접미어되는 문자 유형 : [ 소스 ]U
u
LL
ll
unsigned long long int
U
/ u
는 부호없는 정수에 대한 C / C ++ 접미사입니다.
LL
/ ll
는 C ++ 11long long
의 새로운 유형 이고 길이가 64 비트 이상이어야 하는 정수에 대한 C / C ++ 접미사입니다 .
메모:
- 예를 들어
int
수정자가 사용되는 경우 키워드를 생략 할 수 있습니다unsigned long long
. 따라서 이것은로 정의one
되며unsigned long long int
할당 된 모든 번호는 다음static_cast
과unsigned long long int
같습니다.unsigned long long one = 1
- C ++ 11 은
auto
. 변수 유형을 선언시 할당 된 유형으로 설정합니다. 때문에 예를 들어,2ULL
인unsigned long long int
리터럴은two
int로서 정의 될 것이다unsigned long long int
:auto two = 2ULL
- C ++ 14 는 순서 독립적 인 리터럴 접미사를 도입했습니다. 이전에는
U
/u
접미사가 크기 접미사 앞에 와야했습니다. 그러나 년경 C ++ (14) 접미사가 어느 순서로 허용됩니다, 그래서 지금부터3LLU
되는unsigned long long int
문자가three
int로서 정의 될 것이다unsigned long long int
:auto three = 3LLU
참고 URL : https://stackoverflow.com/questions/8809292/ull-suffix-on-a-numeric-literal
'program tip' 카테고리의 다른 글
KnockoutJS에서 $ data 변수의 기원과 목적은 무엇입니까? (0) | 2020.11.15 |
---|---|
C ++ 11 "자동"의미 (0) | 2020.11.15 |
내부 클래스가 private final 메서드를 재정의 할 수있는 이유는 무엇입니까? (0) | 2020.11.15 |
MongoDB 원거리 페이지 매김 (0) | 2020.11.15 |
Python 팬더의 데이터 프레임에서 matplotlib 산점도 만들기 (0) | 2020.11.15 |