Оператор sizeof()
¶
Унарни оператор sizeof()
користи се за рачунање величине операнда у бајтовима
\([B]\). Резултат операције је неозначена целобројна константа типа size_t
,
дефинисаног у библиотеци stddef.h
.
Коришћењем овог оператора можеш да избегнеш експлицитно навођење величине
типова података у коду програма. То може да буде корисно јер величине типова
података могу да зависе од компајлера, као што је био случај са различитим
величинама long double
типа у Microsoft C/C++ и GNU C компајлерима.
Операнд sizeof()
оператора може бити основни или изведени тип података или
израз. Општи облик наредбе формиране sizeof()
оператором је:
sizeof(izraz);
Тип података као операнд¶
Ако је операнд тип података (са или без модификатора), резултат операције је количина меморије у бајтовима \([B]\) која се алоцира за тај тип.
Напиши програм у програмском језику C који ће на стандардни излаз исписати величине у бајтовима свих неозначених целобројних типова.
#include <stdio.h>
int main(void)
{
printf("%llu\n", sizeof(unsigned char));
printf("%llu\n", sizeof(unsigned short));
printf("%llu\n", sizeof(unsigned int));
printf("%llu\n", sizeof(unsigned long int));
printf("%llu", sizeof(unsigned long long int));
return 0;
}
На стандардном излазу исписаће се тражене величине у бајтовима:
1
2
4
4
8
Израз као операнд¶
Ако је операнд израз, резултат операције је количина меморије у бајтовима \([B]\) која се алоцира за вредност израза.
Напиши програм у програмском језику C који ће на стандардни излаз исписати
величину у бајтовима збира целобројне променљиве int a = 3;
и реалне
променљиве double b = 3.14;
.
#include <stdio.h>
int main(void)
{
int a = 3;
double b = 3.14;
printf("%llu", sizeof(a + b));
return 0;
}
На стандардном излазу исписаће се количина меморије која се алоцира за
резултат типа double
, јер је int + double = double
.
8
Извршавање операнда у sizeof оператору¶
sizeof()
је тзв. compile-time оператор, што значи да се израз као операнд
sizeof()
оператора не извршава.
Напиши програм у којем је иницијализована целобројна променљива int a = 10;
и
декларисана целобројна променљива int b;
, где променљива b
добија вредност
операције sizeof(++a)
.
#include <stdio.h>
int main(void)
{
int a = 10, b;
b = sizeof(++a);
printf("%d %d", a, b);
return 0;
}
На стандардном излазу исписаће се:
10 4
јер је a
инкрементирана као операнд оператора sizeof
, па се њена вредност
неће повећати за 1.