[C] brojač u C-u

C, C++, Java, PHP, Ruby...

Moderator/ica: Moderatori/ce

Pravila foruma
U naslovu teme unutar uglatih zagrada navesti o kojem jeziku je riječ. Primjer: [Java]
Avatar
4ndY
Moderator
Postovi: 4060
Pridružen/a: 15 svi 2008, 18:05
Spol: M
OS: Fedora/KDE
Lokacija: Hamburg, DE
Kontakt:

Re: brojač u C-u

Post Postao/la 4ndY »

Pa onda to sigurno kompajler radi i opet ne moram brinut :-)

To je ista stvar zašto je ++i brže od i++. Ali je razlika toliko minorna da se programer time ne bi trebao zamarati. Nemam ja ništa protiv samo 0, ali osobno se s '\0' lakše snalazim u kodu.
A neutron walks into a bar; he asks the bartender, 'How much for a beer?' The bartender looks at him, and says 'For you, no charge.'
Avatar
DoDo
Postovi: 1559
Pridružen/a: 23 sij 2008, 11:51
Spol: M
OS: GNOME 3
Lokacija: ~/Croatia/Zagorje/Radoboj

Re: brojač u C-u

Post Postao/la DoDo »

nicky je napisao/la:... (naredba više za izvođenje), a sa 0 nema tog koraka (kraći put).
Ne. Prouči malo kako compiler radi i vidla buš da uopće nema veze da li ti napišeš 0, '\0' ili NULL. Preprocesor prije kompajliranja ionako sve pretvori u 0, a kompajler dalje radi svoje.
4ndY je napisao/la: To je ista stvar zašto je ++i brže od i++.
Otkud ti to? Obje naredbe se prevode u istu instrukciju. Razlika je samo u prioritetu izvođenja: ++i prvo poveća i, a tek onda koristi novu vrijednost, a i++ prvo koristi (staru) vrijednost od i, a tek onda ga poveća.
Primjer:

Kod: Označi sve

int a[] = {50, 100};
int i=0, j=0;

printf("%d %d", a[++i], a[j++]); --> ispiše se 100 50
printf("\n%d %d", i, j); --> ispiše se 1 1
:mrgreen: Smile! It makes people wonder what you're thinking about... :mrgreen:
I am NaN, I am a free man!
Započnite svoje Linux iskustvo na http://wiki.open.hr
Avatar
tartaglia
Postovi: 400
Pridružen/a: 13 sij 2009, 12:57
Spol: M
OS: openSuse 11.3
Lokacija: Zagreb

Re: brojač u C-u

Post Postao/la tartaglia »

Razlika je kod klasa u c++-u. i++ će napravit novu instancu klase i, dok ++i mijenja postojeću i samo vrati referencu na nju. Pa ako je i neka ogromna klasa razlika se osjeti.
Avoid the Gates of Hell. Use Linux!
Avatar
nicky
Site Admin
Postovi: 2074
Pridružen/a: 07 pro 2007, 16:30
Spol: Ž
OS: ubuntu 12.04
Lokacija: Zagreb

Re: brojač u C-u

Post Postao/la nicky »

:nee Moja greška, ne procesor nego compiler.
Avatar
4ndY
Moderator
Postovi: 4060
Pridružen/a: 15 svi 2008, 18:05
Spol: M
OS: Fedora/KDE
Lokacija: Hamburg, DE
Kontakt:

Re: brojač u C-u

Post Postao/la 4ndY »

DoDo je napisao/la: Otkud ti to? Obje naredbe se prevode u istu instrukciju.
Sorry, zaboravio sam da se tu radi samo o Cpp-u, kao što je naveo tartaglia. U C-u obje stvari idu u INC.

No sve u svemu i ako u Cpp-u testirate u for petlji koliko je razlika -> prezanemariva (s time da se mora pazit da kompajler ne koristi nikakve optimizacije) :-) Po meni se time ne treba zamarati, jer se onda obično potroši vrijeme koje bi se bolje potrošilo za bitnije probleme.
A neutron walks into a bar; he asks the bartender, 'How much for a beer?' The bartender looks at him, and says 'For you, no charge.'
Avatar
DoDo
Postovi: 1559
Pridružen/a: 23 sij 2008, 11:51
Spol: M
OS: GNOME 3
Lokacija: ~/Croatia/Zagorje/Radoboj

Re: brojač u C-u

Post Postao/la DoDo »

tartaglia je napisao/la:Razlika je kod klasa u c++-u. i++ će napravit novu instancu klase i, dok ++i mijenja postojeću i samo vrati referencu na nju. Pa ako je i neka ogromna klasa razlika se osjeti.
Aha, tak već da, ali samo ako je i instanca neke klase koja ima implementiranu funkciju operator+ (ili operator+= - ne znam točno jer ne koristim te stvari u c++-u).
4ndY je napisao/la:Po meni se time ne treba zamarati, jer se onda obično potroši vrijeme koje bi se bolje potrošilo za bitnije probleme.
Slažem se!
:mrgreen: Smile! It makes people wonder what you're thinking about... :mrgreen:
I am NaN, I am a free man!
Započnite svoje Linux iskustvo na http://wiki.open.hr
Odgovori