Citat:
int x[] = {2,5,6,4,7};
printf("\n cifra 0: %d", x[0]);
Znaci, on mi ispise odredjenu cifru na odredjenom mjestu koje oznacim,
u ovom slucaju ispisat ce mi broj 2. Ali mi nije jasno kada imam ovu situaciju:
Greska. X[] je *niz* celobrojnih vrednosti (a ne jedan 'int' sa pozicijama cifara),
a to sto nema nista u zagradama je olaksica u kodiranju (da ih ne bi rucno
prebrojavao).
Dakle ono gore je isto sto i:
X[0] = 2;
X[1] = 5;
X[2] = 6;
X[3] = 4;
X[4] = 7;
Dakle, ti si u prvom slucaju 'stracio' 5 bajtova da bi smestio broj 25647. To
si trebao da uradis ovako:
x[0] = 25647;
ili samo:
x = 25647;
U jednu 'int' celiju mozes da upises broj od -32768 do 32767 ili 0 do 65535
ako imas i 'unsigned' modifikator (unsigned int). Velicina 'int'-a moze biti i
veca (2147483648 do 2147483647 ili 0 do 4294967295) ako konfigurises
okruzenje drugacije. Uglavnom, funkcijom sizeof(int) mozes da dobijes koliko
je bajtova rezervisano.
Citat:
int x[100];
scanf("%d", &x)
U ovom slucaju ti su u vrednost x[0], uneo broj (kako si rekao) 4356. Dakle, opet
se radi o *nizu* celobrojnih vrednosti, a ne o pozicijama cifara. To si ti nesto
pomesao sa stringovima, gde je stvarno jedna pozicija - jedna oznaka.
Sto se tice upisa celobrojnih vrednosti u fajl, stvarno postoje (uopsteno) dva
nacina:
1) kao string (posle vadis cifre po pozicijama kao sto si u pocetku radio,
samo sto neces koristiti niz 'int'-ova nego niz 'char'-ova)
2) kao broj (da izdvojis cifre moras da koristis mat.operacije '/' i '%' )
Evo kako se upisuju/citaju brojevi u slucaju 2:
Code:
// pseudo
int ceobroj = 25647;
Write ( &ceobroj, sizeof(int) );
Code:
// pseudo
int prostor_za_ucitavanje = 0;
Read ( &prostor_za_ucitavanje, sizeof(int) );