Sunteți pe pagina 1din 12

LUCRAREA 2

Scopul lucrrii este familiarizarea studenilor cu alfabetul limbajului, cuvintele-cheie, conveniile de


denumire a variabilelor, tipurile de date de baz precum i declaraia i definiia unei variabile.

I.

OBSERVAII TEORETICE

1.1.

Cuvinte-cheie. Alfabetul limbajului

Ca n orice limbaj de programare exist o mulime de combinaii (simboluri) care sunt


rezervate, adic este interzis folosirea lor n alte situaii (sau contexte de lucru) dect cele

impuse de compilatorul acelui limbaj.


Aceste simboluri rezervate acoper att tipurile de date de baz (pe care le vom studia la
punctul 1.3.), a modificatorilor acestora (acelai paragraf), ct i situaiile n care se impun
decizii sau n cazurile n care se definesc tipurile de date omogene sau neomogene (enumerri,
structuri i uniuni). Vom vedea pe parcursul laboratoarelor exact despre ce este vorba.

Pentru comunicarea n C exist o serie de cuvinte (mulimi de simboluri) pe care


compilatorul le aduce, predefinite, i pe care un programator trebuie s le rein. Prin exerciii, el
va trebui s fac asocierile necesare pentru a le folosi aa cum se impune.
Cuvintele-cheie sunt:
auto
break
case
char
const
continue
default
do
double
else

enum
extern
float
for
goto
if
int
long
register
return

short
sizeof
static
struct
switch
typedef
union
unsigned
void
volatile

while

Prima remarc este aceea c numrul acestor cuvinte-cheie este rezonabil, adic nu atinge un
numr exagerat de mare. Acesta constituie, fr ndoial, un avantaj.
Toate aceste simboluri au asociat o serie de reguli de sintax, care le definete complet
modul de folosire, i care cuprinde i excepiile de la regula general.
Un exemplu este regula de sintax pentru const: acesta este un modificator de format, n
sensul c aduce reguli n plus la folosirea tipurilor de dat de baz. Apare de obicei naintea, dar
poate i succede, unui cuvnt-cheie ce specific un tip de dat de baz (cum sunt char, int sau

Programarea Calculatoarelor - ndrumar de laborator

14

float). Efectul este acela al declarrii unei constante de acel tip, ceea ce nseamn c, fr
iniializarea variabilei respective n momentul declarrii, ea nu are nici un sens.

Un exemplu corect:

const int a = 10; // constant n baza 10, iniializat la declarare

i unul incorect:

const int a;

// aici apare marcat o eroare de sintax

n cel de-al doilea caz, nespecificnd o valoare de nceput constantei a, nu o vom putea folosi
dect dup specificarea unei valori, adic:
a = 10;
// i aici apare o eroare de sintax
printf("\n Valoarea lui a: %i", a);
// aici este folosit, pentru afiare, valoarea lui a.

Apare contradicia: orice constant nu are dreptul de a aprea ntr-o atribuire instruciunea C prin care se stabilete o valoare pentru entitatea din partea stng a semnului de
egalitate. Deci, pe linia:
a=10;

vom avea un mesaj de eroare din partea compilatorului, de genul:


5 - C:\BC\MyApp\Laborator\lab2_1.cpp - uninitialized const 'a'
6 - C:\BC\MyApp\Laborator\lab2_1.cpp - assignment of read-only variable 'a'

Cifrele de la nceputul rndurilor care denumesc eroarea arat numrul liniei din program
unde a aprut acea eroare.
Observaie:
n sursele salvate cu extensie .cpp compilatorul (fiind unul propriu C++) sunt valabile i
unele dintre funciile considerate ne-standard, mpreun cu fiierele header asociate (v. getch()
alturi de conio.h).
Modificatorul short este aplicabil doar tipului ntreg (int).
Dup cum vedei, exist, bine stabilite, anumite caracteristici i comportamente ale
compilatorului, n diferite contexte de lucru, aa cum aminteam la nceput. Rolul exerciiilor de
pe parcursul laboratoarelor este acela de a evidenia aceste particulariti.
! Luai toate notiele pe care le considerai necesare pentru a reine ct mai multe dintre
aspectele ntlnite. Rapiditatea i modul de nelegere depind i de felul n care v marcai prin
comentarii aceste erori. !

Lucrarea 2

15
1.2.

Conveniile de denumire ale variabilelor

ntr-un program C vor exista, n 99% dintre cazuri (majoritatea absolut), variabile sau
constante de lucru. Pentru a le putea folosi va trebuie s le dm nume. Numele variabilelor fac
parte din clasa identificatorilor. Printre ei mai apar i numele funciilor, numele vectorilor i
numele tipurilor de date omogene/neomogene (enumerri/structuri, uniuni).
Regula de baz este: identificatorii ncep cu liter sau caracter de subliniere (underscore), i
au o lungime de cel mult 32 de caractere. Din acestea, compilatorul consider semnificative doar
primele ase. Apare un compromis: un nume de variabil este bine s spun despre ce este
vorba, caz n care am dori s utilizm attea caractere (n limita celor 32) cte ne sunt necesare
pentru a-i explica rolul. Aici intervine un inconvenient: dac acea variabil este des folosit, a-i
repeta numele devine dificil.
Compromisul este acela de a mpca modul de denumire cu acela al semnificaiei i
numrului de apariii n program al acelei variabile. Exist deja consacrate anumite variante de
denumire ale variabilelor. De exemplu literele i, j, sau k sunt de obicei dedicate contoarelor adic variabilelor de tip ntreg care controleaz numrul de rulri ale ciclurilor de tip for() sau
while().
Exemplu:

for(i=10; i>=1; i--) printf("\n pasul: %i", i);

sau:

i=10;
while(i>=1)
{
printf("\n pasul: %i", i);
i--; // echivalent cu i = i-1;
}

Am folosit aici dou cuvinte-cheie, for i while. Ele nu pot aprea n alte situaii dect cele
pentru care au fost proiectate. Dar putem apela la artificii de notaie, precum _for sau __while.
Observai c identificatorii sunt coreci (ncep cu _) i au i o semnificaie imediat, denumirea
lor fcnd imediat referire la cuvintele consacrate deja de ctre compilator.
Numele unei variabile poate fi ales (n mod expres) exagerat, dar corect. Afirile din
program ale unei variabile de tip ntreg se pot face n variantele:
- cu specificatorul %x avnd efect un rezultat n baza 16.
- cu specificatorul %o avnd efect afiarea n baz 8,
- cu specificatorul %c, prin care se afieaz efectiv simbolul alfa-numeric asociat numrului
zecimal (de exemplu codul ASCII 97 este atribuit caracterului 'a' minuscul).
Caracterele mici (lowercase) sunt situate n tabela ASCII dup cele mari (majuscule =
uppercase) (!).
Tabela ASCII este o colecie de numere, prin care se realizeaz o codificare necesar
lucrului pe calculator. Studiind-o vei observa cum fiecare simbol cunoscut de noi din scrierea

Programarea Calculatoarelor - ndrumar de laborator

16

obinuit are asociat un cod numeric. Codificarea const tocmai n aceast asociere ntre o
reprezentare numeric i una simbolic.
Ca un exemplu pentru convenia de denumire a variabilelor, n programul lab2_3.cpp, sunt
raportate urmtoarele erori:
6 lab2_3.cpp - stray '$' in program

6 lab2_3.cpp - redeclaration of `char

Pe linia 6 este raportat o eroare deoarece n numele variabilei apare caracterul $, interzis a
face parte dintr-un identificator.
nlturai semnele de comentariu de pe linia 6 i de pe liniile 13-17 i recompilai. Vei
observa chiar erorile amintite mai sus.
1.3.

Tipurile de date de baz

Ca n orice limbaj de programare, i n C exist un set (mulime) de tipuri de date predefinite


(fundamentale sau de baz).
De aceast mulime de tipuri de date depinde i flexibilitatea limbajului: sau exist un numr
important de tipuri de date, mpreun cu o clas de operatori asociai, proprii acelor tipuri - caz
n care limbajul este de nivel nalt i flexibil, putnd fi folosit ntr-o gam extins de aplicaii, sau
se restrnge clasa tipurilor de baz la cele fundamentale (caracter, ntreg, real), situaie n care
limbajul este mai puin flexibil, i deci de nivel mai sczut (cu exprimare relativ greoaie).
n C exist, prin comparaie cu C++, o clas apropiat de tipuri de date, ns o mulime
restrns de operatori asupra tipurilor. De aici i clasificarea sa drept de nivel mediu.
Tipurile de date de baz sunt:
Numele tipului
char
(implicit signed)
unsigned char
int
(implicit short i signed)
unsigned int
(implicit short)
long int
(implicit signed)
unsigned long int
float
(semn obligatoriu)
double
(semn obligatoriu)

Spaiul de memorie
(Bytes)

Gama de valori

-27, 27 1

0, 28 1

-215, 215-1

0, 216-1

-231, 231-1

0, 232-1
Real n simpl
precizie.

4
8

Real n dubl precizie.

Lucrarea 2

17
long double

10

void

tip *pTip
(tipul pointer)
tip tablou[DIM]
(tipul vector 1-dimensional)
Tip
tablou[Dim1][Dim2][DimN]
(tip tablou multidimensional)
struct nume
{
tip1 cmp1;
tip2 cmp2;

}
enum nume{ const1[=init1][,
const2[=init2],]}
(tipul enumerare)
union nume
{
tip1 arg1[,
tip2 arg2,]
}
(tipul uniune)

Real n dubl precizie


extins.
Are semnificaia de
nimic sau orice,
funcie de context.

Spaiul asociat lui


tip

DIM*sizeof(tip)

Dim1*Dim2*Dim3**Di
mN*sizeof(tip)

sizeof(struct nume)
(se ine cont de
eventualele
alinieri n
memorie)
Compilatorul
trateaz valorile
enumerare drept
ntregi.
La un moment dat se
folosete doar una
dintre variabilele
pe care le cuprinde
uniunea. Spaiul de
memorie alocat este
dat de:
Max(sizeof(tip1),
sizeof(tip2),)

Ceea ce trebuie reinut de aici este:


- fiecare tip de dat are rezervat un numr de bii (sau, echivalent, de octei);
- pentru anumite tipuri de date - cele aritmetice (char i int)- exist reprezentri cu
i fr semn;
- doar ntre tipurile de date matematice (int, float, double, long double) se pot
face conversii, adic treceri dintr-un tip ntr-altul.
- pe lng tipurile matematice exist i tipuri de date mai complexe, catalogate
drept:
i. omogene (vectori, matrice, enumerri) ce conin elemente de acelai tip,
ii. neomogene (structuri i uniuni) ce pot conine tipuri de date diferite.
Operatorul specific sizeof ntoarce numrul de octei ai tipului de dat asupra cruia se
aplic.

Programarea Calculatoarelor - ndrumar de laborator

18

nainte de a ne referi la spaiul de reprezentare, s vedem care sunt puterile lui 2 care ne
ofer cele mai apropiate numere de puterile lui 10 (ordinele de mrime).
Astfel:
1K = 1000|10 = 210 = 1024 (kilo)
// observai un offset de 24 (fa de valoarea de 1000), care se
// propag la nmulirile ulterioare.

1M = (1k)2 = 1 000 000|10 = 220 = 1 048 576 (mega)


1G = (1K)3 = 1 000 000 000|10 = 230 = 1 073 741 824 (giga)
1T = (1M)2 = (1K)4 = 1 000 000 000 000|10 = 240 = 1 099 511 627 776 (terra)

S facem o discuie asupra spaiului de reprezentare al tipurilor din familia ntregilor. Dup
cum s-a vzut n Laboratorul 2 - "Sistemul de numeraie binar", poziia din extrema stng ntr-o
reprezentare n baza 2 poart denumirea de Most Significant bit (MSb) i are rolul de semn. 0
= plus, i 1 = minus.
Cum fiecare bit adugat ntr-o reprezentare binar are ca efect dublarea gamei de
reprezentare de pn n acel moment, operaia invers, de renunare (rezervare) la o poziie din
reprezentare (i acesta este bitul de semn) conduce la njumtirea gamei de reprezentare.
Aadar, dac considerm bitul MSb drept bit de semn, pentru tipurile char i int (cu
modificatorul signed, implicit) rmne un numr de bii util cu unul mai puin dect ntregul
spaiu de bii rezervat.
Concret:
- pt. int exist rezervai 2B, adic 16b. Dac calculm numrul de combinaii ce pot
fi reprezentate cu toi cei 16b ajungem la:
216 = 26*210 = 64K.
Numrul 64K reprezint, de fapt, urmtoarea valoare zecimal:
64*210 = 64*1024 = 65 536.

Acum, dac facem convenia de semn, atunci MSb nu mai este poziie util n reprezentri,
astfel c numrul de combinaii - exceptnd, deci, poziia semnului - poate fi:
15
2 = 32K = 32 768.
Trebuie observat c exist 32K de combinaii pozitive i tot attea negative. Adic 32K de
reprezentri cu MSb pe 1, i 32K de reprezentri cu MSb pe 0.
nc o observaie: toate numerele negative au un corespondent (complement) calculat pe
baza relaiei:
/N = 2n - N = N|complement

de 1

+ 1.

Prin notaia /N am simbolizat valoarea complementar a lui N, adic valoarea negat.


Exemple:
Pentru programul lab2_4.cpp, n varianta prezentat se raporteaz urmtoarele avertismente
(warnings):
10 lab2_4.cpp - [Warning] initialization of negative value
10 lab2_4.cpp - [Warning] argument of negative value `-16'

Lucrarea 2

19

De obicei, avertismentele sunt mai subtile dect erorile, pentru c n principiu ele apar n
situaiile n care se ncalc "uor" (la limit) anumite reguli "de bun sim". Este i cazul liniei 10
din acest program, n care variabila a fost declarat ca fiind fr semn - specificator unsigned -,
iar valoarea de iniializare a avut, totui, semn. Acest lucru este posibil, cu condiia de a nu
depi capacitatea de reprezentare pentru tipul de dat respectiv.
ncercai cteva exerciii pe hrtie pentru trecerea unui numr n complementul su.
Limea implicit n octei a tipurilor ntregi depinde de compilatorul pe care se lucreaz. De
aceea, la trecerea unui cod surs de pe un calculator pe altul, n situaia n care compilatorul este
de ateptat s fie altul, trebuie ca programatorul s-i asigure portabilitatea folosind operatorul
sizeof.
n ce privete numerele reale, aici situaia este diferit: orice compilator respect un
standard de reprezentare a numerelor reale (cu denumirea IEEE 754) n care spaiul de memorie
rezervat fiecrui tip de dat este fixat i nu poate fi modificat.
Exist un efect similar dac operatorul sizeof este aplicat asupra denumirii tipului de dat,
sau asupra unei variabile de un anumit tip. n situaia:
float real = -1.4; // declaraia unei variabile reale simpl precizie.
printf("\n Numr octei pt. float: %d, %d", sizeof(float), sizeof(real));

se va afia de dou ori 4 (numrul de octei ai lui float).


Studiai programul lab2_4.cpp, modificndu-l. Pstrai ns o copie a originalului.
1.4.

Declaraia i definiia unei variabile

Prin declaraia unei variabile se face de fapt o asociere ntre un nume (corect) i un tip de
dat. n acelai timp se stabilete (se rezerv) i o zon de memorie, avnd limea dat de
numrul de octei asociai tipului de dat ce apare n instruciunea de declaraie.
Dac n momentul declarrii se face i o iniializare a variabilei respective, atunci declaraia
se numete definiie, pentru c, static - adic n momentul compilrii - se rezerv spaiu de
memorie pentru a putea stoca valoarea de iniializare. Opus variantei statice de rezervare a
memoriei este varianta dinamic, atunci cnd stabilirea limii zonei de memorie se face n
momentul rulrii programului, folosind funcii de bibliotec specifice acestei operaii
(numit alocare de memorie).
n toate programele rulate pn n acest moment s-au fcut astfel de declaraii de variabile.
Pentru a putea afia coninutul acestor variabile, adic valoarea lor efectiv, funcia printf()
folosete numele variabilelor declarate. Adic trebuie s cunoasc zona din memorie (spaiul
rezervat) unde exist fiecare dintre acele variabile, i unde sunt salvate (scrise) valori compatibile
cu tipul lor. Aceast asociere ntre numele unei variabile i o zon de memorie este efectul
instruciunii de declarare/definire a variabilei.

Programarea Calculatoarelor - ndrumar de laborator

20

Concluzie: n urma declarrii/definirii, prin folosirea numelui unei variabile, compilatorul


realizeaz asocierea cu zona de memorie rezervat acelei variabile.
Observaie:
n ANSI C, ntr-un corp de instruciuni (cel delimitat de acolade) toate
declaraiile/definiiile de variabile apar primele, fiind plasate imediat dup acolada deschis.
Toate celelalte instruciuni aparinnd programului (afiare, calcule .a.) succed
declaraiilor/definiiilor de variabile.
1.5.

Detalii de programare

Pentru nelegerea programelor utilizate n lucrare studiai ANEXA lucrrii.


1.6.

Comenzile compilatorului

nainte de compilare codul surs trebuie salvat (cu combinaia de taste CTRL+S), sau,
echivalent, din meniul File, cu comanda Save as.
Compilarea se va face cu comanda CTRL+F9, iar rularea cu comanda CTRL+F10. Compilarea i
rularea se pot executa, succesiv, printr-o singur tast, anume F9. Aciunile echivalente din
meniu: meniul Execute comanda Compile, respectiv Compile + Run.
Observaii:
1.
Orice nou modificare a codului-surs trebuie urmat obligatoriu de salvarea acestuia
(CTRL+S). Abia dup aceea pot urma celelalte aciuni dorite.
2.
Dac nu se realizeaz aducerea la zi a programului, compilarea i rularea ce urmeaz
se fac tot pe varianta veche, adic ce de dinaintea ultimelor modificri.

II.

DESFURAREA LUCRRII

2.1. Definirea unei constante. Rulai programul lab2_1.c. Care sunt erorile din program

referitoare la definirea constantei? Comparai-le cu cele din expunerea teoretic. Definii


corect constanta.
2.2. Definii dou variabile de tip contor. Rulai programul lab2_2.cpp. Observai efectele

celor dou instruciuni de ciclare. Comparai rezultatele.


2.3. Declararea/definirea corect i incorect a variabilelor. Rulai programul lab2_3.cpp.

Remarcai lungimea numelui variabilelor. Renunai la comentariile de pe liniile 6 i 14,


15, 16. Notai erorile de sintax. Readucei apoi la codul surs la forma corect.
Modificai acum numele acelei variabile n:

Lucrarea 2

21

sau n

$denumireExageratDeLunga_DarCorecta
denumireExageratDeLunga_Incorecta$

Observai i notai erorile compilatorului.


2.4.

ncercuii identificatorii coreci din urmtoarea list de nume:

2.5.

ncercuii identificatorii incoreci din lista de nume urmtoare:

2.6.

Definirea/declararea variabilelor de diferite tipuri de dat fundamentale, conform


tabelului prezentat n seciunea "I. OBSERVAII TEORETICE. Rulai programul
lab2_4.cpp. Comparai rezultatele cu modalitile specifice fiecrui tip prezentate n
tabel. Notai avertismentele i comparai-le cu cele din expunerea teoretic.

2.7.

Ordinea n interiorul unui corp de instruciuni declararea/definirea variabilelor apar


ntotdeauna primele. Rulai programul lab2_5.cpp. Apar dou instruciuni de afiare:
una naintea declarrii unei variabile ntregi, i alta ce urmeaz acelei definiii.
Compilatorul fiind ns unul de C++ (Developer C++ - DevC++), n care restricia
aceasta nu mai este valabil, nu marcheaz nici mcar cu avertisment aceast
nclcare a standardului ANSI C. Dac ns se schimb extensia programului, n .c, i
se compileaz cu un compilator pur C, atunci aceast restricie devine, evident,
valabil.

III.

NTREBRI I EXERCIII

3.1.

Dai patru exemple de cuvinte rezervate n C.

3.2.

Ce rezultat au la ieire urmtoarele instruciuni de afiare:

new_num

old-num

2ndPlace

place2

Fourth

Fifth

4th

5th

Void

void

printf( "-\nHello There\n" );


printf( "The number is %d", 6 );
printf( "\tGoodbye\n" );

3.3.

Scriei instruciunea (singular) prin care se face citirea unui ntreg (denumit Num) i a
unui caracter (denumit chIn) de la un utilizator ce lucreaz la dispozitivul standard de
intrare (codificat n C prin stdin i reprezentnd tastatura).

3.4.

Scriei operatorii C pentru operaiile logice NOT (NU = negaie), AND (I), OR (SAU).

3.5.

Declarai patru variabile diferite, de tipuri distincte, i dai un exemplu pentru fiecare
(o simpl instruciune de folosire a lor). Aceste variabile trebuie s poat conine,
respectiv: literele alfabetului, un numr ce conine parte fracionar, un numr a crui

Programarea Calculatoarelor - ndrumar de laborator

22

valoare este ntotdeauna pozitiv i mai mic dect 65.000, i o valoare ntreag cu
valori posibile ntre -1.000.000 i +1.000.000.
Not:
Compunei cte un scurt program pentru fiecare ntrebare. Compilai-l i rulai-l, marcnduv eventualele erori care apar.

IV.

ANEX - sursele complete ale programelor

// lab2_1.cpp
#include<stdio.h>
#include<conio.h>
int main(void){
const int a = 10; // constanta 'a' ia valoarea invariabil 10;
printf("\n Valoarea lui a: %i", a);
getch();
//ateapt caractere de la intrarea standard (stdin=tastatura)
}
// lab2_2.cpp
#include<stdio.h>
#include<conio.h>
int main(void){
int i; // nu este necesara neaparat initializarea acestei
// variabile (NU este o constant).
for(i=10; i>=1; i--)
printf("\n for: Pasul: %i", i);
// echivalentul while al ciclului for() anterior
i=10; // O noua intializare. Ce valoare are i dupa executia primului ciclu?
while(i>=1)
{
printf("\n while: Pasul: %i", i);
i--;
}
printf("\n i are acum valoarea: %i", i);
getch();
}
// lab2_3.cpp
#include<stdio.h>
#include<conio.h>

Lucrarea 2

23
int main(void){
char denumireExageratDeLunga_DarCorecta;
// La urmtorul comentariu se va renuna, n etapa de studiu
// a programului
/* char denumireExageratDeLunga_Incorecta$ = 'b';*/

denumireExageratDeLunga_DarCorecta = 'a'; //cod ASCII hexa: 0x61 (97 in zecimal)


printf("\n Valoarea hexa a caracterului declarat: %c este %x",
denumireExageratDeLunga_DarCorecta,
denumireExageratDeLunga_DarCorecta);
// Urmeaz un comentariu pe mai multe linii, la care se renun
// n studiul programului (v. seciunea II - Desfurarea
// lucrrii), pentru a-i observa efectele
/*
printf("\n Valoarea hexa a caracterului declarat: %c este %x",
denumireExageratDeLunga_Incorecta$,
denumireExageratDeLunga_Incorecta$);
*/
printf("\n Afisare octal: %o", denumireExageratDeLunga_DarCorecta);
// exersati si pe foaie aceasta conversie de baza de numeratie.
getch();
}
// lab2_4.cpp
#include<stdio.h>
#include<conio.h>
int main(void){
// familia intregilor
char ch = 'A';
// cod ASCII in hexa: 41|16 = 65|10
int b = -16;
// reprezentare cu semn. La afisare este
// chiar -16.
unsigned char ch1 = 'a'; // fara semn.
unsigned int b1 = -16; // desi numarul este negativ, deci in
// reprezentarea interna exista MSb=1, afisarea ignora
// acest bit, si ceea ce se obtine este complementul de
// 2 al lui -16, adica: 2^16-16 = 65536-16 = 65 520.
short int b2 = 1;
b2 = -(b2 << 14); // spatiu pe 16 biti, 15 utili (cu semn).
unsigned short int b3 = 1;
b3 <<= 15; // spatiu pe 16 biti, toti utili (fara semn).
long int b4 = 1;

Programarea Calculatoarelor - ndrumar de laborator

24

b4 <<= 31; // spatiu pe 32b, din care 31b utili (cu semn).
unsigned long int b5 = 1;
b5 <<= 31; // spatiu pe 32b, din care toti utili (fara semn).
// familia numerelor reale
float r1 = -16.16; // in cazul numerelor reale semnul este MEREU prezent.
double r2 = -16.16;
long double r3 = -16.16;
// afisari ale numerelor din familia intregilor
printf("\n char: %c, int: %i", ch, b);
printf("\n unsigned char: %c, unsigned int (hexa): %x", ch, b1);
printf("\n short int (cu semn): %i, unsigned short int: %u", b2, b3);
b2 ^= b2;
b2 = -16;
ch = (char)b2;
// conversie implicita, deci fara erori.
printf("\n Dupa conversie: unsigned char: %x, unsigned int: %x", ch, b2);
printf("\n long int (cu semn): %i, unsigned long int: %u", b4, b5);
// afisari ale numerelor din familia numerelor reale
printf("\n\n float: %f, double: %lf, long double: %e ", r1, r2, r3);
// numarul de octeti pentru numere ntregi
printf("\n Valori implicite pentru clasa intregilor:char: %d,\
int: %d, short int: %d, long int: %d",
sizeof(char), sizeof(int), sizeof(short int), sizeof(long int));
// numarul de octeti pentru numere reale
printf("\n Valori implicite pentru clasa numerelor reale:\
float: %d, double: %d, long double: %d", sizeof(r1), sizeof(r2), sizeof(r3));
}
// lab2_5.cpp
#include<stdio.h>
#include<conio.h>
int main(void){
int varInt; // declararea unei variabile intregi: varInt.
printf("\n Instructiune de afisare inaintea declararii/definirii de variabile");
printf("\n Variabila 'varInt' are valoarea %i", varInt);
varInt = 20; // definirea variabilei intregi varInt.

printf("\n Instructiune de afisare ce urmeaza declararii/definirii de variabile");

printf("\n Variabila 'varInt' are valoarea %i", varInt);


getch();
// atept caracter de la intrarea standard (stdin=tastatura)
}

S-ar putea să vă placă și

  • LR Curs 5
    LR Curs 5
    Document7 pagini
    LR Curs 5
    Iosif Mocanu
    Încă nu există evaluări
  • LR Curs 4
    LR Curs 4
    Document3 pagini
    LR Curs 4
    Iosif Mocanu
    Încă nu există evaluări
  • LR Curs 2
    LR Curs 2
    Document5 pagini
    LR Curs 2
    Iosif Mocanu
    Încă nu există evaluări
  • LR Curs 3
    LR Curs 3
    Document5 pagini
    LR Curs 3
    Iosif Mocanu
    Încă nu există evaluări
  • LR Curs 1
    LR Curs 1
    Document4 pagini
    LR Curs 1
    IOana Borca
    Încă nu există evaluări
  • Ghid Privind Buna Practică
    Ghid Privind Buna Practică
    Document287 pagini
    Ghid Privind Buna Practică
    Iosif Mocanu
    Încă nu există evaluări