Знаковни променљиви и непроменљиви подаци¶
Декларација знаковних променљивих¶
Као и код целобројног типа података, за знаковни тип важи да све променљиве
које желиш да користиш у програму прво мораш декларисати. Декларација садржи
тип и један или више идентификатора. Ако у декларацији има више идентификатора,
онда идентификаторе одвајаш оператором ,
.
Променљиве знаковног типа најчешће ћеш декларисати коришћењем кључне речи
char
.
Напиши програм у програмском језику C у којем су декларисане две знаковне
променљиве t
и v
.
#include <stdio.h>
int main(void)
{
char t;
char v;
return 0;
}
или
#include <stdio.h>
int main(void)
{
char t, v;
return 0;
}
Променљива типа char
у меморији рачунара заузима један бајт. Пошто један бајт
има осам бита, то значи да знаковна променљива заузима осам бита у меморији
рачунара. Како програмски језик C за памћење карактера користи стандардни ASCII
бинарни 7-битни кôд, значи да је један бит неупотребљен. Тај први, неупотребљен
бит користи се за знак. Захваљујући том биту и знаковни подаци могу имати
модификаторе signed
и unsigned
. У табели у прилогу
наведене су све дозвољене комбинације модификатора знаковног типа.
Уколико желиш да провериш минималне и максималне вредности које може да има податак знаковног типа на твом рачунарском систему са C компајлером којег ти користиш, то можеш урадити извршавањем програма датог у прилогу.
Иницијализација знаковних променљивих¶
Као и код целобројног типа, иницијализацијом променљивих, променљивама се
додељују почетне вредности. Иницијализација садржи тип, идентификатор, оператор
доделе =
и одговарајућу вредност, а такође можеш истовремено иницијализовати
више променљивих.
Напиши програм у програмском језику C у којем су иницијализоване променљиве
t
, v
, a
и b
са тренутним смеровима на које показују компаси Тамаре,
Владе, Алисе и Боба. Тамарин компас тренутно показује на север N
, Владин на
запад W
, Алисин на југ S
и Бобов на инсток E
.
#include <stdio.h>
int main(void)
{
char t = 'N';
char v = 'W';
char a = 'S';
char b = 'E';
return 0;
}
или:
#include <stdio.h>
int main(void)
{
char t = 'N', v = 'W', a = 'S', b = 'E';
return 0;
}
Такође, као и код целобројног типа, у истој линији можеш комбиновати декларацију и иницијализацију.
Напиши програм у програмском језику C у којем су иницијализоване променљиве као у претходном примеру, а смерови на које показују компаси Милице и Ненада нису познати.
#include <stdio.h>
int main(void)
{
char t = 'N', v = 'W', a = 'S', b = 'E', m, n;
return 0;
}
Знаковни непроменљиви подаци¶
У претходној лекцији научио си како се у програмском језику C записују подаци
знаковног типа, а у овој, како се декларишу и иницијализују знаковне
променљиве. Као и код целобројног типа, константни знаковни подаци су подаци
чија је вредност унапред задата у програму и не може се мењати током извршавања
програма. Њихова вредност може бити задата исто као и вредност знаковне
променљиве, а можеш их дефинисати помоћу кључне речи const
или коришћењем
препроцесорске директиве #define
.
Када дефинишеш знаковни константни податак помоћу кључне речи const
, тип може
бити основни знаковни тип char
са или без signed
или unsigned
модификатора.
Напиши програм у програмском језику C у којем ћеш користити прво и последње
мало слово енглеског алфабета. Прво мало слово је увек a
, а последње увек
z
.
#include <stdio.h>
int main(void)
{
const char prvo_slovo = 'a', poslednje_slovo = 'z';
}
Подсети се да се константним подацима морају доделити вредности у тренутку дефинисања, односно да није могуће прво декларисати константни података, а касније му доделити вредност. Такође, дефинисаним константним подацима није могуће мењати вредност током извршавања програма.
Претходни задатак могао си решити помоћу програма у којем су дефинисане знаковне симболичке константе.
#include <stdio.h>
#define PRVO_SLOVO 'a'
#define POSLEDNJE_SLOVO 'z'
int main(void)
{
}
Иако су препроцесорским директивама дефинисане знаковне симболичке константе,
оне ће бити смештене у меморијску локацију величине 4 бајта. То значи да се
иницијализацијом знаковног константног податка помоћу кључне речи const
заузима 1 бајт у меморији, док се дефиницијом симболичке знаковне константе
заузима 4 бајта.
Дефинисану симболичку константу можеш да поништиш препроцесорском директивом
#undef
, а да ли је нека константа дефинисана или није, можеш да провериш
препроцесорским директивама #if defined()
, #else
и #endif
, исто као и у
случају целобројних симболичких константи.