Doslo je do mene pitanje koji od operatora * (dereferenca) i ++ (sljedbenik) imaju prioritet. :) Konkretno, da li ce ovaj program ispisati danu rijec slovo po slovo? :-k
[code:1]int main (void) {
char *pero="Pero", *p, ch;
p = pero;
while (ch = *p++) printf("%c\n", ch);
printf("%s\n", pero);
return 0;
}[/code:1]
Odgovor je: [b]hoce![/b] =D> Zasto? :-k
Operatori * i ++ imaju [b]isti prioritet[/b], ali se evaluiraju [b]s desna na lijevo[/b] :!: Zato se prvo izvede ++, pa tek onda *.
Dakle, "[i]ch = *p++[/i]" je ekvivalentno "[i]ch = *(p++)[/i]", a [b]NE[/b] " [i]ch = (*p)++[/i]". :D
Vise prioritetima operatora mozete saznati [url=http://gd.tuwien.ac.at/languages/c/programming-dmarshall/node4.html#SECTION00490000000000000000]ovdje[/url]. 8)
Doslo je do mene pitanje koji od operatora * (dereferenca) i ++ (sljedbenik) imaju prioritet. Konkretno, da li ce ovaj program ispisati danu rijec slovo po slovo?
Kod: | int main (void) {
char *pero="Pero", *p, ch;
p = pero;
while (ch = *p++) printf("%c\n", ch);
printf("%s\n", pero);
return 0;
} |
Odgovor je: hoce! Zasto?
Operatori * i ++ imaju isti prioritet, ali se evaluiraju s desna na lijevo Zato se prvo izvede ++, pa tek onda *.
Dakle, "ch = *p++" je ekvivalentno "ch = *(p++)", a NE " ch = (*p)++".
Vise prioritetima operatora mozete saznati ovdje.
_________________ U pravilu ignoriram pitanja u krivim topicima i kodove koji nisu u [code]...[/code] blokovima.
Takodjer, OBJASNITE sto vas muci! "Sto mi je krivo?", bez opisa u cemu je problem, rijetko ce zadobiti moju paznju.
|