sizeof

sizeof 연산자는 피연산자를 저장하는데 필요한 메모리 바이트수를 리턴한다.
return과 마찬가지로 함수가 아니고 연산자이므로, 괄호가 필요하진 않다. 

int age = 16;
printf("%u\n", sizeof(age) );
printf("%u\n", sizeof age );



결과는 모두 같다. 하지만 sizeof의 피연산자로 타입이 오는 경우, 괄호는 꼭 써줘야 한다.

printf("%u\n", sizeof(int) );
printf("%u\n", sizeof int ); // 에러!!



sizeof 연산이후 나오는 결과값은 unsigned int형이다.

char x;
printf("%u\n", sizeof( sizeof x ));    // unsigned int의 크기인 4가 출력됨




literal constant

5, 7 등의 정수는 기본적으로 signed int 형으로 취급한다.
3.4, 5.0, 9. 등은 기본적으로 double 형으로 취급한다.
1.2f, 20f 등 f를 명시한 상수는 float 형으로 취급한다.
'a', 'b' 등은 기본적으로 signed int 형으로 취급한다.
char 형도 수식에선 각각을 int 형으로 취급하여 계산한다.
float 형과 double형이 섞인 수식은 double 형으로 취급한다.
float 형 끼리의 수식은 double 형으로 취급하는 시스템도 있다.
최근 표준에선, double로 취급하지 않고 float로 계산한다.

char c = 'a';
printf("%u\n", sizeof(c));    // c는 char형이므로 1이 출력된다.
printf("%u\n", sizeof('a'));  // 하지만 'a'는 int형으로 취급하여 4가 출력된다.
printf("%u\n", sizeof(c+c));  // char형끼리의 연산은 int형으로 취급하여 계산한다.
                              // 따라서 4가 출력된다.




 
Posted by Нуеоп