Оператор 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.