next up previous contents
Next: Operatii aritmetice, expresii si Up: Introducere. Operatori. Expresii. Previous: Comparatie C - Pascal   Cuprins


Variabile. Operatori. Expresii

La fel ca în primul paragraf, vom studia un mic exemplu comentat.


#include <stdio.h>
#define FEET 0.303

void main(void)
{
  /* program de conversie pasi - metri */

  int dist1;
  double dist2;

  printf("Introduceti distanta in pasi\n");
  scanf("%d",&dist1);
  dist2=dist1*FEET;
  printf("Distanta in metri este: %lf metri\n",dist2);
}



Vom începe explicatiile cu a doua linie a programului. Dupa cum s-a aratat în primul paragraf, caracterul # semnifica o directiva preprocesor. Directiva define are ca efect substituirea textuala în cadrul programului a identificatorului FEET cu valoarea 0.303.

Urmatoarea linie reprezinta începutul functiei main. Corpul acestei functii începe (dupa comentariile ignorate de compilator) cu definirea a doua variabile, dist1 si dist2 de tip întreg, respectiv real dubla precizie (pentru real dubla precizie, se foloseste tipul double). Definirea variabilelor se poate face doar la începutul functiei sau în afara functiei (pentru variabile globale).

Urmatoarea instructiune este apelul functiei printf si are ca efect tiparirea unui mesaj pe ecran. Functia scanf citeste de la tastatura o valoare întreaga (specificata prin descriptorul de format %d) si o memoreaza în variabila dist1. În lista de argumente a lui scanf trebuie precizate nu variabilele care se citesc, ci adresele acestora (de unde folosirea operatorului de adresa &). Mai mult despre aceste functii, în capitolul urmator.

Dupa citirea variabilei dist1, se calculeaza valoarea dist2, prin înmultirea cu valoarea 0.303 (obtinuta prin înlocuirea constantei FEET). Se observa ca cele doua valori sunt de tipuri diferite (dist1 de tip întreg, iar FEET de tip real dubla precizie). C-ul este un limbaj foarte flexibil în ceea ce priveste conversia între tipuri si atribuiri între variabile de tipuri diferite, astfel rezultatul unei operatii este de tipul operandului "mai mare" din punct de vedere al reprezentarii (în cazul nostru, int se reprezinta pe mai putini octeti decât double). Daca variabila din stânga atribuirii este de un tip egal sau mai mare ca expresia rezultata în dreapta, operatia de atribuire are loc fara probleme. Daca însa în stânga atribuirii se afla o variabila mai "slaba", rezultatul expresiei din stânga va fi trunchiat corespunzator.

Ultima linie din cadrul functiei main este un apel al functiei printf pentru afisarea valorii variabilei dist2, valoare reala care impune folosirea descriptorului de format %lf.



Subsections
next up previous contents
Next: Operatii aritmetice, expresii si Up: Introducere. Operatori. Expresii. Previous: Comparatie C - Pascal   Cuprins
Cristian Gavrila 2001-10-02