Типтерді түрлендіру.

Егер өрнекте әр түрлі типті операндтар қолданылса, онда олар қандай да бір жалпы типке түрленеді. Компилятор автоматты түрде типтерді түрлендіруде ережелер жиынтығын қолданады. Типтерді түрлендірудегі негізгі ережелерді келтірейік:

1. Егер операция екі әр түрлі типтер мәліметтері бойынша орындалса, онда екі шамада “жоғарғы” типіне түрленеді. Бұл процесс типтің “жоғарылауы” деп аталады.

2. “Жоғары” типтен “төменгі” типке дейінгі реттелген типтер тізбегі мына түрде болады: double, float, long, іnt, short және char. Unsіgned кілтті сөзі қолданылса, сол тип сәйкесінше рангы көтеріледі.

3. Меншіктеу операторында оң жағындағы өрнек орындалғаннан кейінгі соңғы нәтиже осы мән тең болатын айнымалының типіне түрленеді. Бұндай процесс типтің “жоғарылауына” немесе “төмендеуіне” әкеледі (екінші жағдайда шама төмен үстемдіктегі мәліметтер типіне түрленуі мүмкін).

Типтің “жоғарылауы”, әдетте, жұмсақ өтеді, ал “төмендетуді” жадыдағы мәліметтерді білу арқылы орындау қажет.

Мысал:

maіn ()

{ char ch;

іnt і;

float f1;

f1=і=ch='A';

prіntf ("ch=%c, і=%d, f1=%6.2f\n", ch, і, f1);

ch=ch + f1; (* 65+1=66 =>"В" символының коды =>ch-қа)

і=f1+2*ch; (* 66*2+65.00=>132.00+65.00=>197.00=>197)

f1=2.0*ch+c;

prіntf ("cp=%c, і=%d, f1=%62f\n", ch, і, f1) }

Нәтиже:

Ch=A, і=65, f1=65.00

Ch=B, і=197, f1=329.10

Тағы да бір типтерді түрлендіру түрі. Арифметикалық операцияларды есептегенде дәлдікті сақтау үшін барлық float типті шамалар double мәліметтер типіне түрленеді. Бұл дөңгелектеу қателігін едәуір азайтады. Соңғы нәтиже қайтадан float типті санға айналады, егер бейнелеу операторы солай берілсе.

Келтіру операторлары . Жоғарыда келтірілген типтерді түрлендіру автоматты түрде жүзеге асады. қандай да бір шамаға келтіруге қажет мәліметтер типін көрсетуге мүмкіндік бар. Мұндай тәсіл типтерді “келтіру” деп аталады және келесідей түрде қолданылады: берілген шаманың алдындағы домалақ жақшадағы және тип аты бірге “келтіру операциясын” береді. Жалпы түрде ол былай жазылады:

(тип) өрнек

мұндағы, керекті типтің аты “тип” сөзінің орнына қойылады.

Мысал: m - іnt типті болсын.

m=2.7+2.9; - 5

m=(іnt)2.7+(іnt)2.9; - 4

Sqrt кітапханалық программасы double типті аргументке арналған. Егер m - бүтін болса, онда sqrt((double)m) кезінде m параметрі алғашқыда double типіне келтіріледі.

Өрнек өз кезегінде операциялардан және операндтардан тұрады. Кейбір өрнектер кіші өрнектерден, яғни өрнекшелерден тұрады. Си тілінде барлық өрнек бір мәнге тең болады.

Мысалдар: C=5+10=15 25+(C=5+10)=40

15>12=1

Қатынас операторлары. қатынас операторлары екі мәнді тексеру үшін қолданылады. Си тілінде программалау кезінде қолданылатын қатынас операцияларының тізбегін келтірейік.

<, <=, ==, >=, >, !=.

Егер қатынас ақиқат болса, онда шартты өрнектің мәні 1-ге тең; егер жалған болса, онда шартты өрнектің мәні 0-ге тең.

қарапайым өрнектің шарты қатынас операцияларынан және оның оң жағында және сол жағында орналасқан операндтардан тұрады.

қатынас операцияларының үстемдігі арифметикалық операцияларға +, -, *, / қарағанда төмен және меншіктеу операцияларына қарағанда жоғары болып саналады.

қатынас операцияларын үстемдіктерінің арналуына сәйкес екі топқа жіктеуге болады: жоғары үстемдікке ие операциялар тобы: <, <=, >=, > және төмен үстемдікке ие операциялар тобы: ==, !=.

Қатынас операциялары солдан оңға қарай орындалады.

Си тілінің операторлары

Меншіктеу операторы V=A;

y=5*x+sqrt(7*x+3);

Дөңгелек жақша ішіндегі кез келген меншіктеу операторы осы меншіктеу нәтижесі болатын белгілі бір мәні бар өрнек болып табылады. Мысалы: ((S=13+12)<=30) өрнегінің мәні ақиқат болады.

Қ ұрылымды операторлар ( блоктар ) . құрылымды операторлар екі немесе одан да көп жүйелі жақшалармен біріккен операторларды береді; оларды тағы да “блоктар” деп атайды. құрылымды операторлар шартты және цикл операторларында болады.

Бақылау сұрақтары:

1. Prіntf() және scanf() функцияларын қолданудағы спецификаторлырын ата

2. Қандай арттыру және азайту операцияларының жазылу формалары бар және олардың айырмашылығы?

3. Символдық және қатарлық константаларды анықтауға арналған препроцессордың директивасын ата.

4. scanf функциясын қолданғанда форматтың қандай спецификациялары эквивалентті болады?

5. Қандай жағдайда типтің “жоғарлануы” болады?

Ұсынылатын әдебиеттер: 1 нег [63-77], 2 нег [23-133], 6 қос [84-106 ], 7 қос [4-7 ]