2
-32768…32767
|
Қысқа
|
Short
|
2(1)
|
-32768…32767(-128…127)
|
Ұзын
|
Long
|
4
|
-2147483648…2147483647
|
Таңбасыз бүтін
|
Unsigned int
| 2 |
0…65535
|
Таңбасыз ұзын
|
Unsigned long
|
4
|
0…424967295
|
Нақты
|
Float
|
4
|
3,14*10-38…3,14*1038
|
Екі еселі дәлдігі бар нақты
|
Double
|
8
|
1,7 *10-308 1,7 *10308
|
Берілгендердің күрделі типі массивтерге, құрылымдарға (struct), бірігулерге (немесе құрамаларға) (union), санауларға (enum) бөлінеді.
Препроцессор директивалары
Си тілінде программалау ортасында немесе тіл компиляторынна қажетті бір компонент ретінде препроцессор кіреді. Препроцессордың негізгі қызметі ол-программада шығарылатын тексті оның компиляциясына дейін өңдеу болып табылады.
Препроцессорлық өңдеу қадамдары.
Негізінен препроцессорлық өңдеу бірнеше қадамдардан тұрады. Нақты бір реализация бірнеше қадамдарды біріктіре алады. Бірақ оның нәтижесі келесі реттеу секілді орындалуы қажет.
-
Барлық жүйелік-тәуелді стандарты кодтарға қайтадан өзгертіліп кодталуы керек. (мысалы, жүйелік-тәуелді индикатор жол соғында)
-
"\" және "конец строки" символдарының біреуі араларына қойылған пробелмен алынып тасталады., одан соң бастапоы мәтіндегі келесі жол "\" және "конец строки " символдары орналасқан жолға біріктіріледі.
-
Мәтінде препроцессорлардың директивалары мен лексемалары анықталады, ал әрбір оларға берілген түсінікткме бс орын символымен ауыстырылады.
-
Препроцессор директивалары орындалады.
-
Символдық тұрақтылардағы және символдық жолдардағы эскейп-нәтижелері өздерінің эквиваленттілеріне ауыстырылады., яғни өздерінің сәйкес сандық кодтарына өзгертіледі.
-
Жинақталған символдық жолдарға (жолдық тұрақтылар) түсініктеме беріледі, яғни олар бір жолға біріктіріледі.
-
әрбір препроцессорлық лексема Си тіліндегі мәтінге айналады.
Препроцессорлық лексемаларға символдық тұрақылар, файлдар аты, идентификаторлар, операция белгілері, препроцессорлық сандар, тыныс белгілері және жолдық тұрақтылар.
Препроцессор директиваларын өңдеу қадамдарын толық қаастырайық. Оны орындауда келесі жағдайлар пайда болады:
-
идентификаторларды ауыстыру
-
көрсетілген файлдардан программаға текст қосу .
-
программадан оның мәтінінің дара бөліктерін алып тастау (шартты компиляция).
Препроцессорды басқару үшін, яғни дұрыс қадамдар жасау үшін препроцессор командаларын (директивалары) қолданылады, олардың әрбіреуі жаңа жолдарға жазылады және # символынан басталады.
Препроцессор директиваларының жалпыланған форматы:
# директива аты препроцессор лексемалары.
# символының алдында және артында директиваларда пробел болады. сонымен қатар препроцессор лексемаларының алдына да және артынада да пробел қойылады. Препроцессор директиваларының аяқталу қызметін мәтін жолының соңы атқарады (егер "\" символы сол жолға қойылған болса, онда аяқталу қызметін келесі мәтін жолының соңы орындайды).
Клесі препроцессорлық директивалар анықталған.
# define-препроцессор идентификаторы немесе макросты анықтайды.
# include-файлдан мәтін қосу.
#undef-препроцессор идентификаторын немесе макросты анықтаудан бас тарту.
#if-шартты тексеру.
# ifdef-идентификаторды анықтауды тексеру.
#Ifndef-идентификатордың анықталмағанын тексеру.
#else -#if үшін альтернативті бұтақ басы.
#endif-#if шартты директивасының соңы.
#line-келесі төменгі жолдың номер ретінің ауысуы.
#error-қате туралы хат мітінін түзеу.
#pragma-реализациямен алдын-ала қарастырылған әрекет.
# бос директива.
Препроцессорлық директивадан басқа үш препроцессорлық оерация бар. Олар # define командасыменбірге қарастырылады:
defined –ақиқатты тексеру.
##-препроцессорлық лексема конкатенация.
#-операнданы жолдық символға айналдыру.
#define директивасы бірнеше модификацияға ие. Олар препроцессорлық идентификатордың және макростың анықталуын қарастырады.
#include директивасы программа мәтініне көрсетілген файл мәтінін қосады.
#undef директивасы # define директивасының әрекетін жоққа шығарады.
#if директивасы және оның модификациялары #else, #indif, #elif директиваларымен бірге программа мәтінін шартты түрде өңдеуді ұйымдастырады. Бұларды қолданғанда барлық мәтін өңделмейді, тек оның осы директивалармен бөлінген бөліктері ғанаөңделеді.
#line директивасы жол номерін реттейді.
#error директивасы қате болған жағдайда қысқаша мәтінді диагностикалық хат шығарады.
#pragma директивасы автор өзі құрған компиляторды іске қосады.
#-бос директива болғандықтан ештеңе шақырмайды, яғни ешқандай эффект бермейді.
Негізінен Си тілінің операторлары локальді түрде анықталады. Және олардың мүмкіндіктерін кестемен көрсетуге болады. бұл кестенің мәні өте зор, бұны кез келген уақытта оқығанда немесе программа жазғанда қолдануға болады.
Си тіліндегі программаның құрылымы
Кез келген программа бір немесе бірнеше функциялардан турады. Олар программа құруға керекті негізгі модульдер болып табылады. Кез келген программаның жазылған алғашқы мәтіні бастапқы код деп аталады.Оны біріктірілген программалау ортасында теріп,сонан соң компилятор арқылы машиналық кодқа түрлендіріп орындаймыз.
Си тілінде жазылған программа препроцессор директиваларынан, глобалды (ауқымды) айнымалыларды жариялаулардан, бір немесе бірнеше функциялардан тұрады. Осы функциялардың ішінде түгелдей программаның жұмысын басқаратын бір негізгі (main) функция болады.
С тіліндегі программаның жалпы құрылымы мынадай:
<препроцессор директивалары>
<қолданушы типтерін анықтау – typedef>
<функциялар прототиптері>
<глобалды объектілерді анықтау>
<функциялар>
Сонымен Си программасы бірнеше функциялардан құралады және олардың біреуі міндетті түрде MAIN() болуы қажет.
Қарапайым программаның мысалын қарастырайық. Жалпы кез келген функция оның тақырыбы мен тұлғасынан тұрады.
Алдымен программа процессор арқылы өңделіп, оның директиваларын орындайды. Мұнда программағатақырыптық файлдар прогаммаға қосымша элементтеренгізетін мәтіндік файлдар жазылады. Олар мәліметтерді енгізу\шығару операцияларын немесе экран сипаттамаларын өзгерту үшін қажет.
Программадағы кез келген функция тақырыбы препроцессордың директивасынан және функция атынан тұрады. Функция атына жалғасып , жақша ішіне параметрлер жазылуы мүмкін, кейде параметрлер болмайды,ондайда жақша ішінде ешнәрсе жазылмайды.
Функция тұлғасы операторлардан тұрады,олар жүйелі жақшалармен шектеледі. Әрбір оператордан кейін (;) таңбасы қойылады.
Мысалы:
/ Герон формуласы бойынша үшбұрыш ауданын табу/
#include \*енгізу\шығару директивасы*\
#include \*математикалық функциялар директивасы*\
Main()\*басты функцияны қолдану*\
{
Int a,b,c;
Float p,s;
Printf(“\n үшбұрыш қабырғаларын еңгіз,:\n”);
Scanf(“%f%f%f”,&f,&b,&c);
P=(a+b+c)\2;
S=sqr(p*(p-a)*(p-b)*(p-c));
Printf(“s=%f”,s);
}
Процессор директивалары #include сөзінен кейін жазылады, stdio.h тіркесі енгізу\шығару операциялары орындалатынын білдіреді.Ал math.h тіркесі программада математикалық функциялар пайдаланылатынын көрсетеді.
Басты функция main() аргументсіз жазылған,сол себепті жақша ішінде ешнәрсе көрсетілмеген.Ал функция тұлғасы операторлардан тұруы тиіс. Int түйінді сөзі a,b,c айнымалыларының бүтін мәнін қабылдайды,float түйінді сөзі р,s айнымалыларының нақты мән қабылдайтынын сипаттап тұр.
Келесі жол үшбұрыш қабырғаларыненгізуді талап ететін сөз тіркестерін экранға шығарады, мұндағы \n таңбалары сөз тіркесі алдында және одан кейін курсор бір жол төмен түсетінін көрсетеді. Scanf сөзінен басталатын жол a,b,c мәндерін пернелерден қабылдайды, сонан кейін жарты периметр есептеліп, аудан мәні анықталады да, соңғы нәтиже экранға шығарылады.
Scanf- форматты енгізу.
%d%d -енгізу форматы
&a,&b -енгізетін сандарды жазатын ұяшық адресі.
Формат-қандай сандар енгізілетінін\шығарылатынын көрсететін символдық тип.
%d-бүтін ондық сан шығарылуы тиіс.
%i- бүтін ондық сан шығарылуы тиіс.
%f-жылжымалы нүктелінақты ондық сан.
%e-жылжымалы нүктелі экспоненциалды сан.
%E-е орынына Е шығарады.
%c-бір символ шығарылуы тиіс.
%s-символдар тіркесі шығарылуы тиіс.
%g-нақты сан, сан ұзындығына сәйкес %e немесе %f қолданылады.
%u-таңбасыз ондық бүтін сан жазылып шығады.
%o-таңбасыз бүтін сегіздік сан жазылып шығады.
%x-таңбасыз бүтін он алтылық сан жазылып шығады.
\n-келесі жаңа жолға көшу атқаратын басқару символ.
Дәріс №4.Өзін-өзі тексеру сұрақтары
1.Си тіліндегі программаның құрылымын атаңыз.
Дәріс №5. Меншіктеу операторы. Енгізу – шығаруды ұйымдастыру
-
Меншіктеу операциясы
-
С тіліндегі енгізу-шығару құралдары
-
С++ тіліндегі енгізу-шығару құралдары
-
С тілінде форматтап енгізу және шығару
-
С++-тегі форматтау функциялары мен флагтар
Меншіктеу операциясы.
Меншіктеу операциясынан сол жақ операндасына сәйкес тек модификацияланған мәндер қолданылады (l-мән), сонымен қатар мәндерін өзгертуге болатын кейбір аталған жады облыстарына ссылкалар қолданылуы мүмкін.
Меншіктеу операцияларын жіктей отырып меншіктеу операцияларынң қарапайым және күрделі операциялары бар екенін айта кетейік.
= - қарапайым меншіктеу: операнда өрнегінің мәнінін белгісін операнданың оң жақ бөлінен сол жақ бөлігіне меншіктейді. Мысалы: P=10.3-2*x
*= - көбейтуден кейінгі меншіктеу: сол жақ бөліктін операндасын меншіктейді. Мысалы: P*=2 өрнегі P=P*2 өрнегіне эквивалентті.
/= -бөлуден кейінгі меншіктеу: сол жақ бөліктегі операнданы меншіктеу. Мысалы:P/=2.2-d өрнегі P=P/(2.2-d) өрнегіне эквивалентті.
%= -модуль бойынша бөлуден кейінгі меншіктеу: сол жақ бөліктегі операнданы меншіктеу. Оның қалдық бөлігін бүтін санды бөлудегі мәнін операнда мәніне меншіктеу. Мысалы: N%=3 өрнегі N=N%3 өрнегіне эквивалентті.
+= - қосындыдан кейінгі меншіктеу: екі операндалар қосындысың мәндерін операнданың сол жақ бөлігіне меншіктеу. Мысал: A+=B өрнегі A=A+B өрнегіне эквивалентті.
-= - алу амалынан кейінгі меншіктеу: со жақ және оң жақ мәндерінің алымдарын операнданың сол жақ бөлігіне меншіктеу. Мысал: Х=4.3-z өрнегі X=X-(4.3-z) өрнегіне эквивалентті.
<<= - разрядтардың солға жылжуынан кейінгі меншіктеу: сол жақ бөліктегі поерандалардың бүтін санды мәніне разряд санына байланысты биттік бейнелеудің соға қарай жылжуынан алынған мәнді меншіктеу. Ол бүтін санды операнданың оң жақ бөлігіндегі мәнге тең болады. Мысалы: a<<=4 өрнегі a=a<<4 өрнегіне эквивалентті.
>>= - разрядтардың оңға жылжуынан кейінгі меншіктеу: сол жақ бөліктегі поерандалардың бүтін санды мәніне разряд санына байланысты биттік бейнелеудің оңға қарай жылжуынан алынған мәнді меншіктеу. Ол бүтін санды операнданың оң жақ бөлігіндегі мәнге тең болады. Мысалы: a>>=4 өрнегі a=a>>4 өрнегіне эквивалентті.
&= - поразрядты конъюкциядан кейінгі меншіктеу: сол жақ бөліктегі бүтін санды операнда мәніне поразрядты конъюкциядан және биттік бейнелеуіндегі бүтін санды операнданың оң жақ бөлігін меншіктеу. Мысалы: e&=44 өрнегі e=e&44 өрнегіне эквивалентті.
|= - поразрядты дизъюнкциядан (НЕМЕСЕ) кейінгі меншіктеу: сол жақ бөліктегі бүтін санды операнда мәніне поразрядты дизъюнкциядан және биттік бейнелеуіндегі бүтін санды операнданың оң жақ бөлігін меншіктеу. Мысалы:a|=b өрнегі a=a|b өрнегіне эквивалентті.
^= - ерекше поразрядты дизъюнкциядан кейінгі меншіктеу: сол жақ бөліктегі бүтін санды операндаға ерекше поразрядты операциясын екі операнда мәнінің биттік бейнелеуінен алынған мәнді меншіктеу. Мысалы: z^=x+y өрнегі z=z^(x+y) өрнегіне эквивалентті.
Меншіктеу операциясының екі түрлі жазылуы бар:
-
Толық формасы:
айнымалы_аты =өрнек;
Алдымен өрнек есептеледі, содан кейін оның нәтижесі айнымалы_аты –на меншіктеледі. Мысалы: y=(x+2)/(3*x)-5;
Бір оператордың көмегімен бір мәнді бірнеше айнымалыға меншіктеуге болады, мысалы: x=y=z=0; /* x, y, z=0 */
немесе z=(x=y)*5; - алдымен x айнымалысына y айнымалысының мәні меншіктеледі, одан кейін x*5 өрнегі есептеледі, одан кейін нәтиже z айнымалысына меншіктеледі.
-
Қысқа форма:
айнымалы_аты операция =өрнек;
мұнда операция – (+ , -, *, /, %) арфметикалық операцияларының біреуі;
Мысалы: x*=5; /* x=x*5; */
s+=7; /* s=s+7; */
y/=x+3; /* y=y/(x+3); */
Қысқа форма айнымалы осы оператордың толық формасының екі жағында да кездескен жағдайда қолданылады..
С тілінде айнымалының мәнін 1-ге азайту (--) және арттыру (++) операциялары бар. Операциялар префикстік (++i және --i) және постфикстік (i++ и i--) болуы мүмкін. Бұл операцияны өрнектерде қолданған кезде, егер операция префикстік болса, онда операция бірінші орындалады (i-дің мәні өзгертіледі), содан кейін барып қана өрнек есептеледі. постфикстік операцияны қолданған кезде операция өрнек есептелгеннен кейін ғана қолданылады.
Мысалы: b=7;
n=1;
1. c=b*++n; /* n=n+1; c=b*n; яғни c=14 */
2. c=b*n++; /* c=b*n; n=n+1; яғни c=7 */
С тіліндегі енгізу-шығару құралдары
С/С++ тілдерінде 20-дан астам мәліметтерді енгізу-шығару тәсілі бар. Енгізу-шығару стандартты кітапханалық функциялар файлдармен және әртүрлі құрылғылармен байланысқан мәліметтерді оқуға немесе жазуға мүмкіндік береді.
С тілінде файлдың қандай да бір алдын-ала анықталған структурасы жоқ. Кез-келген мәлімет байттар тізбегі түрінде қарастырылады. Жалпы енгізу-шығару функцияларын негізгі үш категорияға бөлуге болады:
-
Лектік(потоктық);
-
консолдық (консольные);
-
төмен деңгейлі (низкоуровневые)
Лектік функциялар: буферлік, форматталған, форматсыз енгізу-шығару мүмкіншілігін жүзеге асырады.
Буферлік лектердің мәліметтерді уақытша жазу-оқу барысында буферде сақтау мүмкіндігі бар. Дискке тікелей жазу уақыт алады, ал буферлік аймақты пайдалану процесті тездетеді.
Лектік функциялар мәліметтерді символдар легі түрінде қабылдайды. Лектік файлдар арқылы белгілі бір мөлшердегі және форматтағы символдар блогымен алмасуға болады.
Файлды ашқанда лектік функцияны пайдаланып файлмен FILE типтіструктура арасында байланыс орнатылады да программа сәйкесінше осы структураға сілтемені алады, ол лек көрсеткіші немесе лек деп аталады.
-
Сонымен қатар консоль немесе порт арқылы енгізу-шығару орындалады (мысалы, принтер порты арқылы). Бұл жағдайда сәйкес функциялары мәліметтерді байттап оқып-жазады.Консольмен жұмыс жасау қосымша мүмкіндіктер береді. Бұлар мынадайқосымша мүмкіндіктерді орындайды:
-
символдық клавиатурадан енгізілген кезеңін анықтау;
-
енгізілген символдар ЭХО режимін қосу-ажырату. Мысалы, символдың клавиатурадан енгізілген кезеңін анықтау, т.б.
-
Төмен деңгейлі категория функциялары тікелей жүйелік енгізу-шығару құралдарын пайдаланады, яғни төмен деңгейде файлға немесе периферийлік құрылғыларға жол ашады. Төменгі деңгейлі функциялар арқылы файл ашқанда оның дескрипторы – бүтін сан қайтарылады да, ол кейін файл идентификаторы ретінде қолданылады.
Ескерту: Лектік функция мен төмен деңгейлі функцияларды бір программада араластыру арқылы конфликт пайда болады.
Лектік функциялар.
стандарты кітапханасында лектік функциялар орналасқан Қосымшаны жүктегенде автоматты түрде 5 стандартты лек ашылады. Лектер:
-
енгізу (stdin);
-
қателер (stderr);
-
шығару (stdout);
-
баспаға шығару (stdprn);
-
сыртқы құрылғылар (stdoux).
Автоматты түрде қате енгізу, шығару стандартты легі консольмен, байланысады. Лекті көрсететін көрсеткіш аргументі болатын функцияларда жоғарыдағы көрсеткіштердің бірін таңдап көрсету керек. Stdin, stderr, stdout, stdprn, stdoux- тұрақтылар.
getс ( ), putc ( ) - функциялары
getc ( ) функциясы файлдық лектен 1 символды оқиды. Жалпы форматы: int getc ( );
Бұл функция буферден оқылған символдың кодын қайтарады. getc ( ) функциясы лектен жаңа жол символы кездескенге дейін оқиды.
Мысалы, клавиатурадан Enter басу арқылы ғана жекелеген символдар енгізілсін. putc ( ) - символды лекке жазады.
Мысалы, int ix;
Ix=getc (stdin);
putc (ix, stddut);
putc() функциясы қате жіберілгенде EOF қайтарады. putc, getc функциялары функция және макрос түрінде де анықталған. Макрос приоритеті жоғары. Оны өзгерту үшін, яғни макросты болдырмау үшін: # undef getc препроцессор директивасысы берілу керек.
Бүтін сандарды енгізу
Бүтін сандардың легін (буферлік) енгізіп-шығару үшін: getw ( ), putw ( ) функциялары getc ( ), putc ( ) функция секілді, тек бүтін сандарды оқиды және тек файлдардан (екілік режимде ашылған) оқиды.
С++ тіліне тәні енгізу-шығару құралдары
С++ тілінде С тіліндегі стандарт функциялар енгізу-шығаруға қолданылады. Сонымен қатар С++ тілінде т тақырыптық файлында анықталған енгізу-шығару құралдары бар. Лектік енгізу-шығару осы тақырыптық файлдағы кластар арқылы орындалады.
Мына операторлар: >> - енгізу және <<- шығару операторы - кез-келген типті мәліметтермен жұмыс жасауда қолданылады. С++-те де үш лектік класс қарастырылған:
istream - енгізу құралдары;
ostueam - шығару құралдары;
iostream - енгізу-шығару құралдары.
Осы үш класта да <<, >> операторлары қолдынылады. С тіліндегі stdin, stdout, stderr стандартты лектеріне сәйкес С++тілінде cin, cout, cerr, clog – объект лектері қарастырылған.
Cin istream класының объектісі istream енгізу легімен, ал osream класының объектісі cout шығару легімен байланысты.
Cerr - ostream класының объектісі - қателер легі, ал clog ostream класының объектісі - буферленген қателер легіне сәйкес.
Мысалы:
Шығару: С-де: printf (“ бүтін сан = %d, нақты = %f, ia, fb);
Си++-те: cout << “бүтін сан” <
Енгізу: Си-де scanf (“%d %f”, &ia, &fb);
Си++-те: cin >>ia >> fb
Бұл жолдарда С тілінде айнымалылар арнайы форматтар мен типтері анық көрсетілу арқылы орындалса, С++ тілінде << - операторы мәлімет типін және форматын таңдайды, ал >> - операторы қабылданатын мәннің адресін, форматын анықтайды.
-
<< операторында endl манипуляторы тіркелуі мүмкін. Мысалы, cout << “бүтін сан = ” <<іа<
Манипулятор дегеніміз -лекке қатысты нақты әрекет орындайтын арнайы функция. Endl манипуляторы – жаңа жол символын қоюмен қатар лек буферін тазартады.
Ал, flush манипуляторы - ( \ n) жаңа жол литерін шығармайды. >>-операторы жолды оқығанда пробель, ТАВ белгісі, ‘\n’ литері кездескен бойдан оқу әрекетін аяқтайды, ал осы таңбалар арқылы сипатталып кездескен жолды толық оқу үшін cin объектісінің get( ) функциясын қолданған дұрыс.
Мысал: #include
#define n 25
void main (void)
{
char span [n];
cout << “пән аты - ?”;
cin >>span;
cout << “\n сабақ, “ <
Орындағанда: Пән аты - ? Математикалық анализ – түрінде енгізілгенмен, нәтиже экранға толық шығарылмай былайша бейнеленеді:
Сабақ, Математикалық
Сондықтан жолды толық алу үшін мына әрекеттер ретін орындау қажет:
cin.get(span, n);
cout<< “\n Сабақ, “ <
cin объектісінің get( ) функциясында аргументпен қатар, екі параметрден тәуелді анықталуы мүмкін, олар ‘\n’ литері және жолды құрайтын символдардың санына қатысты параметрлер.
cin.get( ) функциясы шектеуші – символ кездескенге дейін немесе ‘\n’ литеріне дейін оқиды.
Мысалы:
cin.get (span, n, ‘*’); мұндағы ‘*’- шектеуші символ болып табылады.
С тілінде форматтап енгізу және шығару
Экранға мәліметтерді форматтап шығару. printf() функциясын шақыру операторы келесі құрылымға ие:
printf(формат түріндегі жол, аргументтер_тізімі);
Форматты жол екі тырнақшамен шектелген (яғни, тексттік константа болып табылады) және өзінің құрамына кез-келген текстті, басқару символдарын және формат спецификаторларын қамти алады. Аргументтер тізімі келтірілмеуі мүмкін немесе мәндері экранға шығарылатын өрнектерден тұра алады. Мысалы, printf("\na="); операторы("a=")текстін және (\n) басқару символын қамтиды. Текст жазылған түрінде экранға шығарылады. Басқарушы символдар шығарылатын белгілердің экранда орналасуына әсер етеді. Басқарушы символдардың белгісі ретінде \ беріледі. Төменде олардың тізімі келтірілген:
\n – жаңа жолға көшіру;
\t – горизонталды табуляция;
\r – курсорды жаңа жолдың басына қайтару;
\a – қоңырау дыбысы;
\b – бір сивол кері қайтару (бір позиция);
\f – жаңа параққа көшу;
\v - вертикалды табуляция.
printf("\nүшбұрыш ауданы=%f",s); операторын қарастырайық. Аргументтер тізімі бір s айнымалысынан тұрады. Оның мәні экранға шығарылады. %f символдар жұбы шығарылатын s айнымалысының мән форматының спецификациясы болып табылады. % - формат белгісі, ал f әрпі шығарылатын санның нақты типті екенін көрсетеді.
Формат спецификаторы шығарылатын өлшембірліктің сырт көрінісінің түрін анықтайды. Кейбір формат спецификаторларын келтірейік:
%c – символ;
%s – жол;
%d – бүтін ондық сан (типі int);
%u – белгісі жоқ бүтін ондық сан (типі unsigned);
%f – бекітілген нүкте түріндегі нақты сандар;
%e – қалқымалы нүкте түріндегі нақты сандар (мантиссамен, ретпен берілген)
Мысалы, келесі операторлардың орындалуынан кейін
float m, p;
int k;
m=84.3; k=-12; p=32.15;
printf("\nm=%f\tk=%d\tp=%e", m, k, p);
экранға мына жол шығады:
m=84.299999 k=-12 p=3.21500e+01
Формат спецификаторына сандық параметрлер қосыла алады: жолдың ені мен дәлдігі. Ені - өлшемге экранда берілетін позициялар саны, ал дәлдік – бөлшек бөлігіне берілетін позициялар саны (нүктеден кейін). Параметрлер % пен формат символының арасында жазылады және бір бірінен нүкте арқылы ажыратылады. М
Мысалы,
printf("\nm=%5,2 ", m); нәтижесінде экранға m=84.30 шығады.
Көрсетілген жолдың еніне шығарылатын мән симай қалған жағдайда да, өлшем толық шығарылады.
Формат спецификаторларына келесі түрдегі модификаторлар да қосылуы мүмкін:
%ld – long int шығару;
%hu – short unsigned шығару;
%lf – long double шығару.
4>
Достарыңызбен бөлісу: |