Newsgroup: it.comp.lang.c
Titolo: Costanti letterali!?!?!?!

Salve a tutti,
mi sto avvicinando al C, ma forse lo sto facendo con il libro sbagliato, 
non saro' un genio, ma credo che questa persona che ha scritto il libro 
avrebbe fatto bene a fare altro.
Passiamo al dunque io programmo in php e python,quindi mi è familare il 
concetto di costante, tuttavia l'autore di questo libro ha fatto di 
tutto per farmi venire il mal di testa.
Cito testualmente la sua definizone di costante  letterale:
"Una costante letterale è un valore digitato direttamente all'interno 
del codice sorgente nel punto in cui è richiesto.Ecco due esempi:
int conta = 20;
float tasso = 0.28"
Come dicevo io so cosa è una costante quello che lui ha spiegato non è 
una costante ma una variabile, quindi vi chiedo ma che diavolo dice? 
come fa ad eseere una costate se io dopo nel programma posso 
tranquillamente digitate conta=30; e ricambiare il valore?
Poi spiega le costanti simboliche, che mi sono dovuto andare a studiare 
su google, dato che il libro in questione non spiega, dice solo che si 
possono definire all'inizio del programma con la direttiva #define
oppure all'interno del programma cona la parola chiave const tipo 
nome_costante. Il buon google, mi ha fatto poi notare che se mentre con 
#define posso dichiarare una costante senza speficificare il tipo di 
dato che contiene, la parola chiave const me lo permette.
Spero in una vostra delucidazione in merito.
P.S.
Il libro in question è programmare in C di Apogeo di Aitken e Jones, 
molti su questo NG diconoche sia un buon testo, ma IMHO o è scritto male 
oppure è tradotto male.

 dato che contiene, la parola chiave const me lo permette.
Che non le spieghi mi sembra strano dato ci sono ben 4 pagine (uno dei 
difetti di questo libro è la prolissità inutile) per l'argomento (Cap. 
3, pp. 49-52).
Ciao.

Ciao,
ti chiedo scusa se ti ho urtato, nella tua risposta intravedo un certo 
dissenso.
Il mio dubbio rimane, dato che *la definizione è completamente errata* 
dato che un valore non puo' essere costante se dichiarato in quel modo, 
dato che il valore potrà essere ridefinito. Sai spiegarmi cosa c'e' di 
costante in "int conta=20;"?
Per costante e' chiaro che ci si riferisce al valore della costante, a 
che cosa mi dovrei riferire allora? ripeto, è errato e non riesco a 
capire cosa cavolo volesse spiegare.
Per fare un esempio pratico, in altri linguaggi, tipo php una volta 
dichiarato il valore di una costante non si puo' piu' cambiare, quindi 
se scrivo:
define('mio_nome','Pippo');
il valore di mio_nome non potra' *mai* essere cambiato, appunto perche' 
e' un costante e non una variabile, e per tutto il programma il valore 
di mio_nome sarà sempre Pippo.
Detto questo ancora non ho capito il senso di quelle righe. Ti sarei 
grato se mi spiegassi cosa vuole spiegare.
cane ha scritto:


> e tasso).
una costante letterale e' semplicemente un valore messo
esplicitamente nel codice.
Tu non stai capendo perche' non c'e' niente di profondo da capire.
quando scrive
conta = 20;
vuol solo dire che 20 rappresenta una costante,
a differenza di, ad esempio, xxx, che di solito rappresenta
una variabile o il nome di una funzione etc.etc.
non sta dicendo che conta e' una costante.
Sostituisci nella tua mente "costante letterale" con "valore esplicito".
ciao,
g.

 di mio_nome sarà sempre Pippo.
Appunto. "mio_nome"  e'  una costante ma non letterale perche'  il suo 
valore (invariabile all'  interno del programma ) e' "Pippo"  e non 
"mio_nome". Peraltro anche in C puoi definire una costante simbolica:
const int conta = 20;
AS  questo punto il valore di ocnta non potrà  più  esser modificato.
Giorgio

 dato che contiene, la parola chiave const me lo permette.
#define non lascia "dichiarare" un bel nulla, è solo una direttiva per il
preprocessore.  In realtà, sia che tu scriva:
#define pippo 20
int conta=pippo;
sia che tu scriva:
int conta=20;
al compilatore arriva sempre è solo la seconda forma.  Nel primo caso, il
preprocessore sostituisce tutte le occorrenze di pippo con il literal 20.
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 dichiarato il valore di una costante non si puo' piu' cambiare,
In quel pezzo di codice C che hai riportato, vengono definite delle
**variabili**, non delle costanti.  Cionondimeno, i valori assegnati
letteralmente alle variabili SONO costanti "literal".
