관우는 왜 C 언어를 살육했나? [2-1] 수치 계산 연산자 #4
by
1.4 sizeof 연산자
벌써 마지막 산술 연산자를 다루는 시간이군요.
**sizeof는 크기를 반환하는 연산자입니다. **
반환하는 값은 바이트 단위입니다. 함수 같지만 연산자입니다. 사용법은 다음과 같습니다.
sizeof(피 연산자);
- 피 연산자 : 자료형이나 값이 올 수 있습니다.
- ( ) 괄호는 묶음용입니다. 없어도 당연히 잘 동작합니다.
다양한 자료형과 값의 크기를 출력하는 예제를 살펴봅시다.
#include <stdio.h>
#include <stdbool.h>
int main(void) {
bool b;
short s;
int i;
float f;
long long ll;
// 자료형 크기 출력
printf("bool size : %d, b size : %d\n", sizeof(bool), sizeof(b));
printf("short size : %d, s size : %d\n", sizeof(short), sizeof(s));
printf("int size : %d, i size : %d\n", sizeof(int), sizeof(i));
printf("float size : %d, f size : %d\n", sizeof(float), sizeof(f));
printf("long long size : %d, ll size : %d\n", sizeof(long long), sizeof(ll));
//값 크기 출력
printf("10 size : %d\n", sizeof(10));
printf("3.14 size : %d\n", sizeof(3.14));
printf("&b size : %d\n", sizeof(&b));
printf("&f size : %d\n", sizeof(&f));
printf("&ll size : %d\n", sizeof(&ll));
return 0;
}
[출력]
bool size : 1, b size : 1
short size : 2, s size : 2
int size : 4, i size : 4
float size : 4, f size : 4
long long size : 8,ll size : 8
자료형과 해당 자료형의 변수의 크기는 너무나 당연하겠지만 같게 출력되었습니다.
이번에는 상수와 주소 크기도 예제로 살펴보겠습니다.
#include <stdio.h>
#include <stdbool.h>
int main(void) {
bool b;
short s;
int i;
float f;
long long ll;
// 값 크기 출력
printf("10 size : %d\n", sizeof(10));
printf("3.14 size : %d\n", sizeof(3.14));
// 주소 크기 출력
printf("&b size : %d\n", sizeof(&b));
printf("&f size : %d\n", sizeof(&f));
printf("&ll size : %d\n", sizeof(&ll));
return 0;
}
[출력]
10 size : 4
3.14 size : 8
&b size : 8
&f size : 8
&ll size : 8
정수형 상수 4, 실수형 상수 3.24는 8입니다. 그런데 주소 크기는 자료형과 상관 없이 모두 8입니다. 64비트 컴퓨터는 주소를 가리키려면 자료형과 무관하게 64비트 즉 8비트가 필요하기 때문이다.
sizeof 연산자는 연산자입니다. 그런데 함수처럼 sizeof() 형식으로 사용합니다. 연산자니까 괄호를 빼도 실행이 되는지 살펴보겠습니다.
#include <stdio.h>
#include <stdbool.h>
int main(void) {
printf("10 size : %d\n", sizeof 10);
printf("3.14 size : %d\n", sizeof 3.14 );
return 0;
}
[출력]
10 size : 4
3.14 size : 8
예상대로 잘 동작하네요. sizeof의 피연산자로 변수, 상수뿐 아니라 수식 등 워낙 다양할 수 있어 편의상 괄호를 붙일 뿐입니다. 필수가 아니라 선택이라는 사실만 잊지마세요.
이상으로 산술 연산자에 대해 알아봤습니다.
殺 |
Subscribe via RSS