Documente online.
Zona de administrare documente. Fisierele tale
Am uitat parola x Creaza cont nou
 HomeExploreaza
upload
Upload




Elemente ale limbajului C

c


Elemente ale limbajului C

A. Cuvinte cheie

Standard:



auto

double

int

struct

break

else

long

switch

case

enum

register

typedef

char

extern

return

union

const

float

short

unsigned

continue

for

signed

void

default

goto

sizeof

volatile

do

if

static

while

B. Tipuri predefinite (standard)

Identificator

sizeof

(PC)

Domeniul de valori

Descriptori

conversie

Exemple de

constante

Char

signed char

1

-128 .. 127

%c %i %d %x %o

'A' 0x41

'\n'

Unsigned char

1

0 .. 255

int

signed int

2

-32768 .. 32767

%i %d %x %o

12

0xC

Short int

signed short int

%hi %hd %hx %ho

014

-32500

unsigned int

2

0 .. 65535

%u   %x %o

0xfff

unsigned short int

%hu   %hx %ho

65535u

long int

signed long int

4

-2147483648 .. 2147483647

%li %ld %lx %lo

-1L

300000l

unsigned long int

4

0 .. 4294967295

%lu %lx %lo

4000000000ul

float

4

3.4e -38 .. 3.4e+38

%f,   %e, %g

1.2

double

8

1.7e-308 .. 1.7e+308

%lf   %le %lg

8e9

long double

10

3.4e-4932 .. 1.1e+4932    

%Lf   %Le %Lg

-1.23456789

2.5e-30

C. Definitii si declaratii

Definitii de noi tipuri (se prezinta forma generala si exemple)

enumerare

enum id_enum ;

enum raspuns ;

typedef enum id_tip_enum ;

typedef enum Logic ;

structura

struct id_str

  ;

struct produs

;

typedef struct id_s /* id_s poate lipsi */

id_tip_str;

typedef struct

TData;

tablou

typedef id_tip_t[dim];

typedef int VectInt[200];

referinta (pointer) la valoare de tip Tval

typedef TVal * tip_pointer;

typedef int * AdrInt;

typedef TProdus * PProdus;

referinta (pointer) la functie

typedef int (* tip_func)(lista_tipuri_param);

typedef int (* TF)(int, VectInt);

sinonim tip predefinit sau deja definit de utilizator

typedef id_tip_existent id_sinonim;

typedef unsigned long Ulong;

typedef char Byte;

typedef enum raspuns TRasp;

typedef struct produs TProdus;

Declaratii de variabile

simple, de tip predefinit sau definit de utilizator prin enum, struct sau typedef

tip lista_id_var;

tip id_var = initializare;

VectInt x, y;

int nx = 0;

TF axx;

enum raspuns r = Nedecis;

TData start = ;

referinta la tip predefinit sau definit de utilizator prin enum, struct sau typedef

tip * id_var;

tip * id_var = initializare;

int * anx;

TData * astart = &start;

referinta (pointer) la functie

tip_rez (* id_var)(lista_tipuri_parametri);

int (* af)(int, VectInt);

prototip functie

tip_rez idf (lista_tipuri_parametri);

tip_rez idf (lista_parametri);

int Max2i (int, int);

int MinVect (int nv, VectInt v);

tablou, cu dim elemente de acelasi tip (tip_el)

tip_el idt[dim];

tip_el idt[dim]=;

tip_el idt[]=;

  /* dimensiune = numar valori initiale */

int a[200];

TData date[50];

int numere[5]= ;

char mesaj[] = "Buna ziua";

D. Accesul la valorile si adresele variabilelor

Variabila simpla:

valoare :

x

adresa :

&x

Vector v cu dim elemente de tip t, cu indici intre 0 si dim-1 (vectorul ocupa dim * sizeof(t) octeti):

adresa vectorului :

v

Adresa elementului cu indice i :

v+i   sau &v[i]

Valoarea elementului cu indice i :

v[i]   sau *(v+i)

Structura s:

adresa structurii :

&s

adresa campului x :

&(s.x)

valoarea campului x :

s.x

Pointer p la o variabila de tip t:

valoarea variabilei :

*p

Daca t - tip structura

adresa campului x :

valoarea campului x :

&(*p).x   sau   &p->x

(*p).x   sau   p->x

Exemple:

E. Operatori

Operator

Semnificatie

Asoc

Operator

Semnificatie

Asoc

f(e)

apel functie

v1 < v2

mai mic

t[i]

indexare

v1 <= v2

mai mic sau egal

s.c

selectie

v1 > v2

mai mare

p->c

selectie indirecta

v1 >= v2

mai mare sau egal

a--

postdecrementare

v1 == v2

egal

a++

postincrementare

v1 != v2

diferit

-n

schimbare semn

i1 & i2

"si" bit cu bit

+n

plus unar (fara efect)

i1 ^ i2

"sau exclusiv" bit cu bit

--a

predecrementare

i1 | i2

"sau" bit cu bit

++a

preincrementare

i1 && i2

"si" logic (conjunctie)

!i

negatie logica

i1 || i2

"sau" logic (disjunctie)

0~i

negare bit cu bit

i? v1: v2

operator conditional

*p

adresare indirecta

a = v

atribuire

&x

preluare adresa

a *= v

a = a * v

sizeof(x)

determinare dimensiune

a /= v

a = a / v

(d)e

conversie de tip (cast)

a %= v

a = a % v

n1 * n2

inmultire

a -= v

a = a - v

n1 / n2

impartire

a += v

a = a + v

i1 % i2

rest impartire (modulo)

a &= v

a = a & v

v1 + v2

adunare

a ^= v

a = a ^ v

v1 - v2

scadere

a |= v

a = a | v

i1 << i2

deplasare stanga

a <<= v

a = a << v

i1 >> i2

deplasare dreapta

a >>= v

a = a >> v

e1 , e2

secventiere

Legenda:

  a - adresa (valoare stanga); c - camp; d - declarator tip; e - expresie; f - functie; i - intreg; n - numar;

  p - pointer; s - structura sau uniune; t - tablou; v - valoare; x - entitate

Marea majoritate a operatorilor necesita operanzi de acelasi tip. Aceasta conditie impune, atunci cand operanzii sunt de tipuri diferite, conversia valorii unuia, sau chiar a ambilor operanzi, la acelasi tip, pentru "echilibrare". Regula de echilibrare este urmatoarea:

  daca operanzii sunt de tip unsigned int si long

  atunci

  daca orice unsigned int poate fi reprezentat ca long

    atunci tipul echilibrat este long

  altfel tipul echilibrat este unsigned long

  altfel se alege tipul care apare mai tarziu in secventa

  int

unsigned int

long

  unsigned long

float

double

long double

Tipul rezultatului operatiei este cel stabilit in urma echilibrarii.

De exemplu, daca se considera valorile intregi s = 76, n = 16 si m = 6 si valoarea de tip double x = s, atunci expresia s / n are valoarea 4, in timp ce expresiile s / (double)n si x / n se evalueaza la 4.75.

De asemenea:

  m / n * 100

  m * 100 / n

  m / (double)n * 100

  m * 100. / n  

F. Instructiuni

Forma generala

Semnificatie

Exemple

expresie;

Expresia este o atribuire sau un apel de functie cu efect lateral

a = 7;

printf ("%i\n", a);

nn = np = 0;

Reprezinta corpul unei functii sau o parte dintr-o instructiune structurata (decizie, ciclu etc.)

if (expresie)

instructiune_1

else

instructiune_2

Expresia codifica o conditie. In functie de valoarea expresiei (!= 0 sau == 0) decide ce instructiune se executa (1 sau 2)

if ( x < y )

min = x;

else

min = y;

if (expresie)

instructiune

Executa instructiune numai daca valoarea expresiei este diferita de 0 (adica este indeplinita conditia)

if ( x < 0 )

negative++;

switch (expresie_tip_intreg)

Selectie secventa de prelucrari, astfel:

- evalueaza expresia

- daca exista eticheta (k_x) egala

cu valoarea expresiei

atunci continua executia cu

  secventa corespunzatoare

altfel daca exista default

  atunci executa secventa_d

altfel nu se executa nimic

Executia continua de la secventa selectata pana la break sau pana la sfarsit.

switch (c)

x = baza;

switch (exp)

while (expresie)

instructiune

Cat timp valoarea expresiei este diferita de 0 (este indeplinita conditia codificata) se repeta instructiunea

d = x; k = 0;

while ( d % y == 0 )

do instructiune

while (expresie);

Executa instructiunea cat timp valoarea expresiei este diferita de 0

do while (n <= 0);

for (expr_i; expr_c; expr_a)

instructiune

Este echivalenta cu:

Expresiile pot fi si secvente de forma

e1, e2,... sau pot lipsi

for(s = i = 0, p = 1;

i < n ; i++ )

for(d = x, k = 0;

d % y == 0;

d /= y, k++ );

Forma generala

Semnificatie

Exemple

break;

Iesire fortata dintr-un ciclu (do, for, while) sau selectie (switch)

for (i = 0; i < n; i++)

if ( v[i] == x ) break;

continue;

Salt la sfarsitul corpului unui ciclu (deci nu se mai executa instructiunile care urmeaza dupa continue).

k = 0; s = 0;

for (i = 0; i < n; i++)

return expresie;

Termina executia corpului unei functii, intorcand ca rezultat valoarea expresiei.

int Min (int a, int b)

int XX (int v[], int n)

return ;

Termina executia corpului unei functii cu rezultat de tip void.

void Inv (int *a, int *b)



Document Info


Accesari: 1461
Apreciat: hand-up

Comenteaza documentul:

Nu esti inregistrat
Trebuie sa fii utilizator inregistrat pentru a putea comenta


Creaza cont nou

A fost util?

Daca documentul a fost util si crezi ca merita
sa adaugi un link catre el la tine in site


in pagina web a site-ului tau.




eCoduri.com - coduri postale, contabile, CAEN sau bancare

Politica de confidentialitate | Termenii si conditii de utilizare




Copyright Contact (SCRIGROUP Int. 2024 )