|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Mar 2002
Messaggi: 153
|
Aiuto urgente !!! Overflow in C++
Ciao a tutti... Ho provato a risolvere da solo, ma non c'e' verso... Sto scrivendo la mia tesi di laurea, un programma C++ che simula un modem satellitare. Devo calcolarne le prestazioni, e tutto va bene fino ad un certo punto: se la simulazione va oltre un certo numero di simboli binari generati, i risultati sono sballati. Ho eliminato tutti i contatori (quelli necessari li incremneto % qualcosa...), ma niente, continua a impazzire... Esiste un modo per compilare (in Visual C++) in modo che, in fase di debug, siano segnalati gli overflow?
Vi prego, e' urgente ! ! ! Bye, mjk |
|
|
|
|
|
#2 |
|
Bannato
Iscritto dal: Jul 2000
Città: Malo (VI)
Messaggi: 1000
|
Re: Aiuto urgente !!! Overflow in C++
Un modo abbastanza veloce puo' essere quello di usare una classe Contatore in cui gli operatori sono stati ridefiniti per fare un controllo sui bound. Penso che si possa trovare su internet un qualcosa di gia' pronto.
Anzi dovresti pure trovare delle classi che implementano interi di dimensione indefinita ( si ingrandiscono a seconda delle necessita' ). Ad esempio se voglio fare con tranquillita x+=10 potrei fare cosi': class Counter { public: <snip> Counter& operator += ( int x ) { #ifdef DEBUG if ( x > 0 && value+x < value ) // controllo overflow, bisogna aggiungere anche il controllo degli underflow exit(1); #endif value+=x; return *this; } private: int value; }; Il controllo viene fatto solo quando e' definita la macro DEBUG, se i metodi sono messi inline in linea di massima il peso aggiuntivo delle chiamate non dovrebbe sentirsi. Piu' che altro c'e' la rottura di dover star li a scriversi un sacco di operatori e i costruttori. |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 20:53.



















