Search
 
 
  Engleski
 
 
 
Open in this window (click to change)
Forum@DeGiorgi: Početna
Forum za podršku nastavi na PMF-MO
Login Registracija FAQ Smajlići Članstvo Pretražnik Forum@DeGiorgi: Početna

Pointeri i zarez operator
WWW:

Moja sarma
 
Započnite novu temu   Odgovorite na temu   printer-friendly view    Forum@DeGiorgi: Početna -> Kolegiji 1. godine, preddiplomski studij Matematika -> Programiranje 1 i 2
Prethodna tema :: Sljedeća tema  
Autor/ica Poruka
SvekY
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 21. 11. 2003. (23:44:22)
Postovi: (FF)16
Spol: muško
Sarma = la pohva - posuda
11 = 14 - 3
Lokacija: unitarni vektorski prostor

PostPostano: 14:20 pon, 24. 5. 2004    Naslov: Pointeri i zarez operator Citirajte i odgovorite

Imam pitanjce o [b]zarez operatoru[/b]: vrača vrijednost zadnjeg ili 1. izraza? :?:

Što znači int* a; Razlika prema int *a;
Što znači int* (*a);
-pointeri idu left-to-right ili right-to-left?

Šuma pointera [size=18][color=red] :cry: Help![/size][/color]
Imam pitanjce o zarez operatoru: vrača vrijednost zadnjeg ili 1. izraza? Question

Što znači int* a; Razlika prema int *a;
Što znači int* (*a);
-pointeri idu left-to-right ili right-to-left?

Šuma pointera Crying or Very sad Help!



_________________
Šarm je kad dobijete ono što želite a da to ne morate tražiti. (iz SvekYeve knjige aforizama)
[Vrh]
Korisnički profil Pošaljite privatnu poruku Pošaljite e-mail
mdoko
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 30. 11. 2002. (22:17:12)
Postovi: (71A)16
Spol: muško
Sarma = la pohva - posuda
199 = 237 - 38
Lokacija: Heriot-Watt University, Edinburgh

PostPostano: 17:39 pon, 24. 5. 2004    Naslov: Re: Pointeri i zarez operator Citirajte i odgovorite

[quote]Imam pitanjce o [b]zarez operatoru[/b]: vrača vrijednost zadnjeg ili 1. izraza?[/quote]
[code:1]
int main(){
int a;
a = 3 , 2;
printf("%d", a);
return 0;
}
[/code:1]
Ovo ispisuje 3.

[quote]
Što znači int* a; Razlika prema int *a;
[/quote]

Nema razlike jedno i drugo deklarira a kao pointer na int.

[quote]
Što znači int* (*a);
[/quote]

To je vrlo zbunjujuca deklaracija koja kaze da je a pointer na pointer na integer tj.
int** a;
odnosno
int **a;
Citat:
Imam pitanjce o zarez operatoru: vrača vrijednost zadnjeg ili 1. izraza?

Kod:

int main(){
int a;
a = 3 , 2;
printf("%d", a);
return 0;
}

Ovo ispisuje 3.

Citat:

Što znači int* a; Razlika prema int *a;


Nema razlike jedno i drugo deklarira a kao pointer na int.

Citat:

Što znači int* (*a);


To je vrlo zbunjujuca deklaracija koja kaze da je a pointer na pointer na integer tj.
int** a;
odnosno
int **a;



_________________
Extraordinary claims require extraordinary evidence. – Carl Sagan
[Vrh]
Korisnički profil Pošaljite privatnu poruku Posjetite Web stranice
SvekY
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 21. 11. 2003. (23:44:22)
Postovi: (FF)16
Spol: muško
Sarma = la pohva - posuda
11 = 14 - 3
Lokacija: unitarni vektorski prostor

PostPostano: 18:13 pon, 24. 5. 2004    Naslov: Citirajte i odgovorite

Što će ispisati sljedeći program?
[code:1]#include <stdio.h>
int main() {
int i=11, j=9, *ip, *jp;
ip=&j, jp=&i;
*jp=- *ip + *ip * *jp, --(*ip);
printf("%d %d %d %d", i, j, *ip, *jp);
return c;
}[/code:1]
Mislim da ispisuje [code:1]90 8 8 90[/code:1]
Zbunjuje me ovaj minus iza operatora pridruživanja.

Treba li zarez operator izgledati ovako:
([i]prva_naredba[/i], [i]druga_naredba[/i], ... ,[i]zadnja_naredba[/i]);
ili mogu izostaviti zagrade. Da li uopće postoji za više od jedne naredbe?

Moramo li na kolokviju kad pišemo program pisati [i]int[/i] kada se podrazumjeva npr. kod [i]main[/i] (to jest kad mogu ne napisati ništa pa da kompilator shvati da je [i]int[/i])?
Što će ispisati sljedeći program?
Kod:
#include <stdio.h>
int main() {
    int i=11, j=9, *ip, *jp;
    ip=&j, jp=&i;
    *jp=- *ip + *ip * *jp, --(*ip);
    printf("%d %d %d %d", i, j, *ip, *jp);
    return c;
}

Mislim da ispisuje
Kod:
90 8 8 90

Zbunjuje me ovaj minus iza operatora pridruživanja.

Treba li zarez operator izgledati ovako:
(prva_naredba, druga_naredba, ... ,zadnja_naredba);
ili mogu izostaviti zagrade. Da li uopće postoji za više od jedne naredbe?

Moramo li na kolokviju kad pišemo program pisati int kada se podrazumjeva npr. kod main (to jest kad mogu ne napisati ništa pa da kompilator shvati da je int)?


[Vrh]
Korisnički profil Pošaljite privatnu poruku Pošaljite e-mail
veky
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 09. 12. 2002. (19:59:43)
Postovi: (5B0)16
Sarma = la pohva - posuda
22 = 24 - 2
Lokacija: negdje daleko...

PostPostano: 18:37 pon, 24. 5. 2004    Naslov: Citirajte i odgovorite

[quote="SvekY"]Što će ispisati sljedeći program?[/quote]

Mogu li pitati zašto ga jednostavno ne utipkaš, kompajliraš i izvršiš? Ako ništa drugo, brže je nego čekati Forumaše... :-)

[quote][code:1]#include <stdio.h>
int main() {
int i=11, j=9, *ip, *jp;
ip=&j, jp=&i;
*jp=- *ip + *ip * *jp, --(*ip);
printf("%d %d %d %d", i, j, *ip, *jp);
return c[/quote]

0 , valjda.

[quote];
}[/code:1]
Mislim da ispisuje [code:1]90 8 8 90[/code:1][/quote]

Da.

[quote]Zbunjuje me ovaj minus iza operatora pridruživanja.[/quote]

Zašto? a=-b pridružuje varijabli a suprotnu vrijednost od varijable b . Najobičniji unarni minus.

[quote]Treba li zarez operator izgledati ovako:
([i]prva_naredba[/i], [i]druga_naredba[/i], ... ,[i]zadnja_naredba[/i]);[/quote]

Otprilike.

[quote]ili mogu izostaviti zagrade.[/quote]

Kao i kod ostalih operatora, stvar je u prioritetu. Ako od 2+3 želiš oduzeti 8, možeš izostaviti zagrade, ali ako to želiš pomnožiti s 5 , ne možeš. Jasno?

Druga je stvar što zarez ima strogo najniži prioritet od svih operatora u Cu, pa ispada da su zagrade uvijek potrebne kad u expressionu ima još neki operator koji bismo htjeli da se izvrši kasnije.

To između ostalog znači da a=2,3 pridruži dvojku varijabli a , ali sam taj izraz vraća 3 (zarez se izvršava kasnije, i vrati drugi operand). Npr. nakon b=(a=2,3) , a ima vrijednost 2 , a b ima vrijednost 3 .

[quote] Da li uopće postoji za više od jedne[/quote]

Operator kao i svaki drugi. Lijevo asocijativni, dakle može primati više operanada, "a,b,c" se evaluira kao "(a,b),c" (i vrati c , naravno).

[quote] naredbe?[/quote]

Ne naredbe! Ne možeš napisati npr.
(while(bla--)blju++),(if(blju)bla--) , kao što ne možeš napisati ni
(while(bla--)blju++)+(if(blju)bla--) .

Druga je stvar što u Cu mnoge stvari nisu naredbe, koje u ostalim jezicima jesu. Npr. printf (poziv funkcije), = (operator) , itd. Sve one vraćaju vrijednost.

[quote]Moramo li na kolokviju kad pišemo program pisati [i]int[/i] kada se podrazumjeva npr. kod [i]main[/i] (to jest kad mogu ne napisati ništa pa da kompilator shvati da je [i]int[/i])?[/quote]

Bilo bi dobro pisati. Jest da ANSI tako kaže, ali ima čudnih kompajlera koji to shvate kao void... mislim da je dobro učiti se deklarirati povratni tip uvijek. Sigurno ne škodi. :-)
SvekY (napisa):
Što će ispisati sljedeći program?


Mogu li pitati zašto ga jednostavno ne utipkaš, kompajliraš i izvršiš? Ako ništa drugo, brže je nego čekati Forumaše... Smile

Citat:
Kod:
#include <stdio.h>
int main() {
    int i=11, j=9, *ip, *jp;
    ip=&j, jp=&i;
    *jp=- *ip + *ip * *jp, --(*ip);
    printf("%d %d %d %d", i, j, *ip, *jp);
    return c[/quote]

0 , valjda.

[quote];
}

Mislim da ispisuje
Kod:
90 8 8 90


Da.

Citat:
Zbunjuje me ovaj minus iza operatora pridruživanja.


Zašto? a=-b pridružuje varijabli a suprotnu vrijednost od varijable b . Najobičniji unarni minus.

Citat:
Treba li zarez operator izgledati ovako:
(prva_naredba, druga_naredba, ... ,zadnja_naredba);


Otprilike.

Citat:
ili mogu izostaviti zagrade.


Kao i kod ostalih operatora, stvar je u prioritetu. Ako od 2+3 želiš oduzeti 8, možeš izostaviti zagrade, ali ako to želiš pomnožiti s 5 , ne možeš. Jasno?

Druga je stvar što zarez ima strogo najniži prioritet od svih operatora u Cu, pa ispada da su zagrade uvijek potrebne kad u expressionu ima još neki operator koji bismo htjeli da se izvrši kasnije.

To između ostalog znači da a=2,3 pridruži dvojku varijabli a , ali sam taj izraz vraća 3 (zarez se izvršava kasnije, i vrati drugi operand). Npr. nakon b=(a=2,3) , a ima vrijednost 2 , a b ima vrijednost 3 .

Citat:
Da li uopće postoji za više od jedne


Operator kao i svaki drugi. Lijevo asocijativni, dakle može primati više operanada, "a,b,c" se evaluira kao "(a,b),c" (i vrati c , naravno).

Citat:
naredbe?


Ne naredbe! Ne možeš napisati npr.
(while(bla–)blju++),(if(blju)bla–) , kao što ne možeš napisati ni
(while(bla–)blju++)+(if(blju)bla–) .

Druga je stvar što u Cu mnoge stvari nisu naredbe, koje u ostalim jezicima jesu. Npr. printf (poziv funkcije), = (operator) , itd. Sve one vraćaju vrijednost.

Citat:
Moramo li na kolokviju kad pišemo program pisati int kada se podrazumjeva npr. kod main (to jest kad mogu ne napisati ništa pa da kompilator shvati da je int)?


Bilo bi dobro pisati. Jest da ANSI tako kaže, ali ima čudnih kompajlera koji to shvate kao void... mislim da je dobro učiti se deklarirati povratni tip uvijek. Sigurno ne škodi. Smile


[Vrh]
Korisnički profil Pošaljite privatnu poruku Pošaljite e-mail Posjetite Web stranice
Prethodni postovi:   
Započnite novu temu   Odgovorite na temu   printer-friendly view    Forum@DeGiorgi: Početna -> Kolegiji 1. godine, preddiplomski studij Matematika -> Programiranje 1 i 2 Vremenska zona: GMT + 01:00.
Stranica 1 / 1.

 
Forum(o)Bir:  
Ne možete otvarati nove teme.
Ne možete odgovarati na postove.
Ne možete uređivati Vaše postove.
Ne možete izbrisati Vaše postove.
Ne možete glasovati u anketama.
You cannot attach files in this forum
You can download files in this forum


Powered by phpBB © 2001, 2002 phpBB Group
Theme created by Vjacheslav Trushkin
HR (Cro) by Ančica Sečan