Newsgroup: it.comp.lang.c
Titolo: facil facile

se io faccio return (puntatore)
mi ritorana un bool che sara' vero se punntatore punta a qualcosa e falso se
nn punta a nulla???
grazie


no.
ciao.

 grazie
Prego

se pero' ogni puntatore lo inizializzo a zero quando nn punta a nulla va
bene???

Puo fare un esempio?...ho capito poco č nulla della tua domanda...

 bene???
L'usuale semantica che si da al puntatore a NULL (che, se non sbaglio, 
e' preferito a 0, almeno in C), e' quella di "non punta a nulla". Spero 
fosse questo che stavi chiedendo.
-- 
Mat/tia Belletti - Undergraduate student @ 
cs.unibo.it
ICQ: 33292311    - email: 
mbel...@cs.unibo.it
IRC: RedGlow     - site(s): 
http://mbellett.web.cs.unibo.it/
Jabber: RedGlow  - Linux registered user 299762 @ machine 213003

samuele wrote:

Se fai return (puntatore) ti ritorna un puntatore.
Un puntatore NULL è un puntatore non valido.
In C, una condizione è falsa se uguale a zero e vera se diversa da zero.
Se il chiamante testerà il puntatore come condizione, otterrà falso se 
il puntatore è NULL e vero altrimenti.
Questo è quanto si può dire sulla tua domanda alquanto nebulosa.

quindi tornera' false se il puntatore "nn punta" e true viceversa???
perche' cane ha detto no...

 perche' cane ha detto no...
allora in c il tipo bool non esiste. il tuo puntatore può puntare ad un 
indirizzo oppure a NULL.
ciao.

 [...] allora in c il tipo bool non esiste. [...]
scusa, questo chi te l'ha detto?
-- 
sbi


wrote:

return(puntatore) ritorna il puntatore
return(!(puntatore==NULL)) ritorna quello che tu dici


intendo dire che il c non ha un tipo bool (ce l'ha il c++). non che le 
espressioni non possono avere un valore logico di verità. il post di 
vincent vega chiarisce.
ciao.

 vincent vega chiarisce.
cane sbagli (sebbene sia vero pre c99) :
#include <stdbool.h>
-- 
sbi

 #include <stdbool.h>
mica è un tipo... è una semplice macro.

cane wrote:


che per lo standard espande a _Bool, che è un tipo
<6.2.5>
2 An object declared as type _Bool is large enough to store the values 0 
and 1.
-- 
sbi

 and 1.
mah.. nei file header del mio compilatore c'è una macro che lo definisce 
come char. ammetto che non ho idea di cosa sia _Bool.
cmq, per informazione, quando parliamo di c su questo ng cosa dobbiamo 
intendere il c ansi o il c99?
ciao.

if (punt) bla bla bla
allora questo e' un estratto di codice da un progetto all'interno del mio
libro universitario...
questo significa che il ciclo inizi se
 il puntatore punta  qualcosa???

 intendere il c ansi o il c99?
il C89 č iso/iec 9899:1990 + technical corrigenda 1 e 2
di solito ci si riferisce a C94/C95 come C89 + normative addendum 1
il C99 č iso/iec 9899:1999
in genere con C ci si riferisce all'ultimo standard.
-- 
sbi

 in genere con C ci si riferisce all'ultimo standard.
grazie delle info, in genere io scrivo c ansi.
ciao.


probabile. cmq, per ottenere l'effetto che dici io scriverei
if(punt != NULL) ecc...
ciao.

 if(punt != NULL) ecc...
p.s. dipende anche da come è trattato punt prima dell'if, per esempio se 
è dichiarato tipo:
void *punt;
(metti quel che vuoi al posto di void) può darsi che il suo contenuto 
sia != NULL e tuttavia il puntatore non punti a nulla di utile.
ciao.

cane ha scritto:

Che ha esattamente lo stesso effetto di
	if(punt) ...
nel caso altamente probabile in cui NULL == (void*)0L .
La forma if(punt != NULL) è da preferire perché è decisamente
più chiaro che cosa faccia (ed il tuo post lo dimostra appieno).
Invece, non c'è un modo (semplice) per identificare un puntatore
diverso da NULL che però non punta a nulla; è una situazione
assolutamente da evitare.
Daniele

 in genere con C ci si riferisce all'ultimo standard.
non sono molto d'accordo - ho visto la stragrande maggioranza delle 
volte risposte sul C standard inteso come C89, piuttosto che come C99.


 if(punt) ...
Se e solo se NULL ha il valore zero... E questo è vero per tutti i
compilatori che io abbia mai visto ma NON È garantito dallo standard.
Insomma, scrivere if(punt) al posto di if(punt!=NULL) è un peccatuccio
veniale finché lo fa un programmatore di videogiochi, ma una potenziale
strage colposa se lo fa un programmatore del software di bordo di un aereo.
Se invece lo fa l'autore di un libro di testo sul C, è un crimine che merita
la decapitazione sulla pubblica piazza (dopo adeguata tortura, of course.
:-)
--
Cingar
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 volte risposte sul C standard inteso come C89, piuttosto che come C99.
Anche perche` di compilatori che implementano perfettamente lo standard
C99... sinceramente non ne conosco. O meglio.. il gcc mi pare non lo
faccia. Non so se MS lo fa o altri.
-- 
RiK0
Non credo negli schemi non vincenti.

 faccia. Non so se MS lo fa o altri.
se la metti cosě, non esiste alcun compilatore c++ allora.
-- 
sbi

 se la metti cosě, non esiste alcun compilatore c++ allora.
Tutto sommato pero` lo ANSI C++ e` piu` supportato. Si arriva anche al
95/99%, da quanto ho letto.
Non so C99 come sia supportato.
Se poi aggiungi il fatto che la maggior parte di C che si vede in giro
e` C89 (eventualmente con aggiunte di C99, ma di 'straforo' e dipendenti
dall'implementazione...).
Comunque e` una questione di lana caprina.


 volte risposte sul C standard inteso come C89, piuttosto che come C99.
Non si tratta di essere d' accordo. Se si vuole aderire allo standard, 
occorre tener presente che nella prefazione dello standard ISO/IEC 
9899:1999 si legge chiaramente
"This second edition cancels and replaces the first edition, ISO/IEC 
9899:1990, as amended and corrected by ISO/IEC 9899/COR1:1994, ISO/IEC 
9899/AMD1:1995, and ISO/IEC 9899/COR2:1996."
Quindi di standard ce n' e' solo uno alla volta.
Giorgio

 Quindi di standard ce n' e' solo uno alla volta.
Ok, mi sono espresso male - ovviamente, non stavo certo affermando che 
il C99 non e' standard.
Ma, se le cose invece fossero come dici tu e basta, allora il 90% dei 
topic di questo newsgroup sarebbero OT (ehy, pensandoci bene... ^_^)
In ogni caso, e' vero: e' una questione di lana caprina, e non postero' 
piu' a riguardo :)


 topic di questo newsgroup sarebbero OT (ehy, pensandoci bene... ^_^)
..
Chi di standard ferisce ...     :-)
Scherzi a parte, a me sembra utile pubblicizzare il piu' possibile lo 
standard corrente perche' credo sia vitale per la vita di un linguaggio 
che non si crei una frattura troppo grande tra status dello standard e 
uso corrente.
Poi, sono consapevole che non sempre ci sia a disposizione un 
compilatore c99. BTW, il gcc mi sembra non male come aderenza 
(ovviamente a patto di chiedere lo standard c99 nelle opzioni, visto che 
il default, almeno nella versione che utilizzo  3.3.3,  e' lo standard c89).
Giorgio


Da un lato, sono effettivamente d'accordo. Dall'altra, sono cresciuto a 
colpi di C89, e ci sono affezionato ;D
Scherzi a parte - qualcuno ha link riguardo all'aderenza al C99 dei 
principali compilatori in giro (o del gcc in particolare)?
PS: ho postato ancora perche' l'argomento e' sostanzialmente cambiato ;D
