본문 바로가기

컴퓨터 과학 & 영상처리 관련/C / C++

int min = (int)10e10, (int)-10e10 이게 크기가 얼마나 되냐?

#include <stdio.h>

int main(void)
{
    int min = (int)10e10;
    int max = (int)-10e10;
    int temp = 0xffffffff;
   
    printf("min %d %x\n",min,min);
    printf("max %d %x\n",max,max);
    printf("temp %d %x\n",temp,temp);   
   
    getchar();
    getchar();
    return 0;
}

결과

 

min 2147483647 7fffffff
max -2147483648 80000000
temp -1 ffffffff
minf 99999997952.000000 e0000000
maxf -99999997952.000000 e0000000

 

 

->http://kin.naver.com/qna/detail.nhn?d1id=1&dirId=1040101&docId=66684087&qb=KGludCkxMGUxMA==&enc=utf8&section=kin&rank=3&search_sort=0&spq=0&pid=ROvDzc5Y7tCsscA9dG4ssssssso-030211&sid=UdDlzHJvLBkAAHi9Q5s

 

->min=(int)10e10;
부동소수 표현입니다.
앞의 10은 가수, 뒤의 10은 밑을 10으로 하는 거듭제곱수.

10 곱하기 10의 10승  

따라서, 10e10 = 10 * 10^10 = 10^11 이니 천억이 되겠네요.
또 하나의 예를 들면, 2e4 이면 2*10^4 = 20000 입니다.
그런데 제시한 코드에서 이상한 것은 결국 int로 형변환 해버리므로 int의 최대값을 구해서 넣는 것이 나을 것으로 보입니다. 즉, min = ~(1<<(sizeof(int)*8-1));
한편, unsigned int의 최대 값은 ~0 입니다.