-
[C++] C++ 의 '1LL'은 무슨 뜻일까?쾌락없는 책임 (공부)/C++ 짜잘이 2022. 6. 16. 17:45반응형
개요 + 바로 결론
볼록 껍질 알고리즘 문제를 보다가 1LL 이라는 글을 봤는데 LL은 주로 long long 줄인 모습 같고 앞에 1은 뭘까 생각하고있었습니다. 그래서 찾아본 뒤 기록하기 위해서 글을 쓰는 것입니다.
결론을 먼저 말씀드리면 1LL은 1을 Long Long으로 표현한 것입니다.
숫자LL
일단 기본적으로 C++은 상수를 int 타입으로 계산을 하게 됩니다.
#include <iostream> using namespace std; int main(){ cout << 1000000 * 1000000 << endl; }
이를 출력하려고 하면 GCC를 사용하는 제 환경의 경우 오류가 나오게 됩니다.
이로 인해서 실행조차 안되는데 이를 위해서 사용하는게 1LL 입니다.
#include <iostream> using namespace std; int main(){ cout << 1LL * 1000000 * 1000000 << endl; }
이러면 만억? 정도 되는 수가 출력이 되는 모습을 볼 수 있습니다. long long 범위 안에 잘 들어오는 모습을 볼 수 있습니다.
#include <iostream> using namespace std; int main(){ cout << 2LL * 1000000 * 1000000 << endl; }
그런데 2LL을 시도하면 위 결과에서 2를 곱한 결과가 나오게 됩니다.
이를 통해서 알 수 있는 사실은 앞의 수는 단순 상수일 뿐이고 뒤의 LL이 이 상수가 long long 타입임을 알려주는 장치라는 것입니다. 이를 통해서 상수 연산을 long long으로 할 수 있는 것이죠.
순서에 대한 주의점
#include <iostream> using namespace std; int main(){ cout << 1000000 * 1000000 * 2LL << endl; }
LL이 완전 만능은 아니기에 상수 연산의 맨 앞에 둬야 long long 연산을 할 수 있습니다. 이를 하지 않으면 이전처럼 int 의 오버플로우가 난다는 경고문을 볼 수 있게 됩니다.
참고 자료
반응형'쾌락없는 책임 (공부) > C++ 짜잘이' 카테고리의 다른 글
[C++] C++의 move semantics (의미론적 이동?) (0) 2022.08.07 [C++] C++ 로 중복 없는 랜덤 변수 만드는 방법 - 1 (0) 2022.08.05 C++ make_pair vs {} (0) 2022.03.06 C++ fill_n vs memset, 무슨 차이가 있을까 (0) 2022.02.28 C++ pimpl과 관련한 이야기들 (0) 2022.02.16