Newsgroup: it.comp.lang.c++
Titolo: Esiste una nuova matematica, oppure ????

Salve a tutti,
chi riesce a spigarmi questo stranissimo comportamento?
Ho inserito nel mio codice un banalissima istruzione if, che riporto qui di
seguito.
double t_sim=0;
/......./ Resto del codice
if(t_sim>(double)(16,5))
     {
      t_sim++;
      t_sim--;
      }
/...../
 Chi riesce a spiegarmi come mai entro dentro l'if con t_sim==5,00009 e
cocci ? Sempre lo stesso valore, poi.
Inoltre stranissimamente questo codice dovrebbe iterarsi fino a che t_sim ==
100 (valore impostato da me), ma, senza dare alcun errore di esecuzione
(sarebbero le finestre di Windows con la crocetta rossa), si interrompe
sempre a t_sim== 16,934615.....
Il tutto accade utilizzando il Borland C++ ver. 5.02.
Ma anche in una sessione di MS-DOS si blocca sempre allo stesso valore.
Intanto ho ripetutamente controllato che il valore 100 si memorizza
correttamente nella variabile di upper-bound per t_sim...... non so che
pensare... non esce nemmeno in uno dei punti in cui ho inserito exit....
Boh!!!
Se non riesco a risolvere gioco questi numeri al super enalotto.... almeno
serviranno a qualcosa !
Bye,
sebastiano

 
 (16,5) equivale a scrivere 5. 
 
 I realtà tu volevi scrivere 16.5.
M

 Boh!!!
Non ci giurerei, ma direi che gli operatori ++ e -- non siano definiti per
le
variabili in virgola mobile. Anche se fossero definiti, però, eviterei di
usarli...
Ciao
Daniele.

Mi rispondo io stesso, ragazzi.... UNA MALEDETTISSIMA VIRGOLA !!!!
Potete notare che ho indicato 16 virgola 5 come 16,5 e non 16.5.... Al
solito, nessun error o warning di alert. Ho anche alzato il livello dei
warnings, cioè dovrebbe spuntare su più casi, e invece niente. Mi chiedo a
questo punto cosa mai vorrà significare per il compilatore (perchè
compila!!!) 16,5 !!!!
Ditemi la vostra.
Bye,
Sebastiano

Ciao,
ci sei arrivato anche tu.
Grazie, comunque
Ma come mai 16,5 equivale a scrivere 5?

 wrote :
| Ditemi la vostra.
l'operatore , e' un operatore, che ritorna un valore, e percio' e'
perfettamente lecito scrivere codice come il tuo.
e' come se avessi scritto
double(16+5);

 Ma come mai 16,5 equivale a scrivere 5?
Guardati l'operatore virgola.
EMG

 double(16+5);
Scusa ma 16,5 equivale a 5 non a 16 + 5.
EMG

if(t_sim>(double)(16,5))
Ma da quanto tempo programmi (in qualsiasi linguaggio)?
Luc.

Da tanto !!
Neanche io resisto.... ma tu non ne fai mai di sviste?

Neanche io resisto.... ma tu non ne fai mai di sviste?
Si, ma non posto subito sul NG 8-)))))))
Luc.

cocci ? Sempre lo stesso valore, poi.
Per scrivere un numero in forma decimale devi scrivere 16.5; il codice
che hai scritto tu compila perchč esiste un operatore virgola "," che
restituisce sempre il secondo argomento. Quindi la chiamata 16,5
restituisce 5.
Antonio Cuni
ICQ: 82732649

Cavolo, ma quando non sai che pesci prendere e la cosa ti sembra a tuo modo
di vedere, almeno in quel momento, che fai ? Non speri di trovare qulcuno
"gentile" che ti risponda?
;-)
Bye,
Sebastiano


Un'espressione c++ del tipo
a0, a1, ..., an
dà come risultato an, dopo aver evaultato tutti gli ai.
Piergiorgio Pirro
piergior...@tin.it
http://web.tiscalinet.it/ppirro
ICQ# 60945968



Cio` che hai scritto e` perfettamente legale (per quanto non fosse
cio` che tu volevi)!
Il compilatore valuta l'espressione 16,5
come operator,(16, 5) che restituisce 5...
a questo punto applica la conversione a double.
Paolo
-------------------------------------------
  Paolo Marotta
 
http://web.tiscalinet.it/paolo_marotta/
-------------------------------------------