solaris 10 long long 형 질문드립니다.

idrukawa의 이미지

int main( int argc, char **argv )
{
long lTmp;
long long llTmp;

#if 1
lTmp = 1234567890;
llTmp = 12345678901;

printf( "lTmp: %lu, llTmp: %llu\n",
lTmp, llTmp );
#endif

printf( "sizeof(short): %d, sizeof(long): %d, sizeof(long long): %d\n"
"sizeof(double): %d\n",
sizeof(short), sizeof(long), sizeof(long long), sizeof(double) );

return 0;
}

위와 같이 아~주 간단한 테스트 코드를 작성했습니다.

컴파일부터 에러가 나는데요.
test/DataType] g++ test.cpp
test.cpp: In function `int main(int, char**)':
test.cpp:14: error: integer constant is too large for "long" type

long long = 64bit이라 (2^63 - 1)까지는 무리없이 입력이 가능하지 않을까 싶은데요...
11자리 숫자부터 변수에 저장이 안됩니다.
조언좀 주세요ㅠ

planetarium의 이미지

llTmp = 12345678901LL;

상수도 자료형이 있습니다. 뒤에 postfix를 붙이지 않은 정수 상수는 int로 취급됩니다. long이던가? 여하튼 long long 은 LL 붙여야 해요.

idrukawa의 이미지

캄사합니다 ㅎ