Cartea conține o descriere completă a celor mai frecvente implementări de limbaj de programare C pe 16 biți microcalculator compatibil cu IBM PC. Descrierea biblioteca standard C.
Pentru cursuri de instruire în programare, dezvoltare de software, precum și studenți ai universităților specialități relevante. Acesta poate fi folosit ca documentația tehnică și manualul de referință pentru o gamă largă de programatori ca profesioniști cu o vastă experiență în limbajul C, și începe de codificare în C.
Book: C Limbajul de programare pentru PC
Și ordinea de prioritate
Și ordinea de prioritate
Precedența și asociativitatea operațiilor lingvistice C afectează ordinea grupării operanzilor și a operațiilor de calcul într-o expresie. prioritate de funcționare este importantă doar dacă aveți mai multe operații, având priorități diferite. Expresiile cu operatiuni cu prioritate mai mare sunt evaluate mai întâi.
Tabelul 4.1 prezintă funcționarea în ordinea descrescătoare a priorității. Operațiuni aranjate într-un rând al tabelului, sau combinate într-un grup, au aceeași prioritate și aceeași asociativitatea.
Precedența și asociativitatea operațiunilor în C
Din tabelul 4.1. rezultă că operanzii reprezentând un apel de funcție, expresia indexului, o expresie a elementului de alegere și de exprimare în paranteze au cea mai mare prioritate și asociativitatea de la stânga la dreapta. Aducerea tip are aceeași prioritate și ordinea în care operațiunile unare.
Expresia poate conține mai multe operații de o prioritate. Atunci când mai multe operații de același nivel de prioritate apar în expresie, acestea sunt aplicate în funcție de asociativitate lor - fie de la dreapta la stânga sau de la stânga la dreapta.
Rețineți că, în C, ordinea de prioritate adoptată nu a reușit pentru anumite operațiuni, în special pentru operațiuni și operațiunile de schimbare la nivel de bit. Ei au o prioritate mai mică decât operațiile aritmetice (adunare, etc.). Prin urmare, expresia
a = b 0xFF + 5
a = b (0xFF + 5),
Multiplicativ, operații de adunare și binari prezintă comutativă. Aceasta înseamnă că rezultatul evaluării unei expresii implică mai multe operații comutative ale aceleiași priorități, indiferent de ordinea efectuarea acestor operații. Prin urmare, compilatorul își rezervă dreptul de a calcula astfel de expresii, în orice ordine, chiar și în cazul în care expresia are paranteze care specifică ordinea de evaluare.
SP TS realizat de operare, plus unar permite să garanteze ordinea de evaluare a expresiilor în paranteze.
calcule secvențiale de operare, operații logice AND și OR, operațiunea condiționată și apelul funcției de funcționare garantează o anumită ordine de evaluare a operanzilor. operațiune de calcul secventiala calculeaza operanzilor la un moment dat, de la stânga la dreapta (virgula de separare argumente într-un apel de funcție, nu o secvență de calcul operațiunilor și nu oferă astfel de garanții). Garantat este faptul că, la momentul argumentelor funcției de apel au fost deja calculate.
operațiune condițional calculează un prim operand la prima și apoi, în funcție de valoarea sa, fie a doua sau a treia.
operații logice, de asemenea, calculul operanzilor de la stânga la dreapta. Cu toate acestea, operațiile logice calculat numărul minim de operanzi necesare pentru a determina rezultatul expresiei. Astfel, a doua expresie nu poate fi operanzi evaluată.
z = x> y || f (x, y);
Este mai întâi calculată expresie x> y. Dacă este adevărat, variabila z i se atribuie valoarea 1, iar funcția f nu este cauzată. Dacă valoarea lui x nu este mai mic decât y, expresia evaluează f (x, y). Dacă funcția returnează o valoare nenul f, variabila z este atribuit 1, altfel 0. Rețineți, de asemenea că apelul funcției f este garantat faptul că valoarea primului argument mai mare decât al doilea.
Acest exemplu arată posibilitatea de a utiliza ordine de bază a efectuării operațiunilor logice. Aceasta este, în primul rând, creșterea eficienței prin plasarea condițiilor cel mai probabil ca primul operand de operații logice. În al doilea rând, este posibil să se insereze în controalele de expresie în cazul în care falsitatea acțiunile ulterioare nu vor fi efectuate. Deci, în cazul în care următoarea declarație pentru a citi următorul caracter din dosar va fi efectuată numai în cazul în care sfârșitul fișierului nu a fost încă atins:
if (! feof (PF)) (C = getc (pf)) ...
Aici feof - funcția de testare la sfârșitul fișierului, getc - caracter funcția citește din fișierul (a se vedea 12.).
În al treilea rând, vă puteți asigura că expresia f (x) g (y) funcția f va fi numit înainte de funcția g. Pentru expresia f (x) + g (y), care nu se poate susține.
Exemplele următoare ilustrează gruparea operanzilor pentru diverse expresii.