예시1)
int main(){
printf("%d %d", sizeof(A), sieof(B));
return 0;
}
define 전처리기로 상수를 정의할 때, 형변환이 자동으로 되는지 궁금했음.
결과는 4, 8로 자동 형변환이 된다고 생각하면 될 듯.
다음과 접미사를 통해 명시적으로 타입을 선언할 수 있다.
U, LL 등도 가능함.
// char '2'
// unsigned char
// short
// unsigned short
// int
// unsigned int
// long long
// unsigned long long
예시2)
int arr[] = { 1, 3, 5, 9, NULL, NULL };
printf("%d\n", sizeof(arr));
결과는 24.
그냥 0이 2개 더 들어간 것과 같다고 보면 되는 듯.
C에서 NULL은
#define NULL 0
으로 정의되어 있다.
예시3)
printf("%d\n", 0 == NULL);
printf("%d\n", NULL == false);
printf("%d\n", 1 == 1LL);
printf("%d\n", sizeof(NULL) == sizeof(false));
결과는 1, 1, 1, 0
0과 NULL은 같은 값이기 때문에 당연히 1이 출력된다.
두 번째와 세번째 케이스는 타입의 사이즈가 관계없이 값이 같으면 같은지 알아보고자 함. 결론은 같다.
NULL은 int형 타입으로 정의 되어있음. 각 4바이트, 1바이트로 다르다.
'아카이빙 > C, C++' 카테고리의 다른 글
string과 character 배열 (0) | 2018.05.26 |
---|---|
malloc, calloc, realloc, free (0) | 2018.05.26 |
sizeof 포인터 (0) | 2018.05.26 |
sizeof는 함수? 연산자? (0) | 2018.05.26 |
C언어 포맷출력 인자전달 (passing parameter to printf) (0) | 2017.07.13 |