Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    [C++] Massimo valore di int

    Ho il seguente codice:

    codice:
    #include <iostream>
    using namespace std;
    
    extern void Pause();
    
    void Pause()
    {
    	char pause;
    	cin >> pause;
    }
    
    int main()
    {
    	cout << "Calcolo numeri:\n\n" << endl;
    	int n;
    	for (int i=1; i <= 10; i++)
    	{
    		cout << i << " -> Inserisci numero: ";// << endl;
    		cin >> n;
    		cout << "     n*n = " << n*n << endl;
    	}
    	cout << "\n\nFine." << endl;
    	Pause();
    	return 0;
        
    }
    Se inserisco un numero piccolo, il calcolo è corretto.
    Se inserisco un numero medio, il calcolo ritorna un numero negativo, e questo è ovvio perchè va in overflow.
    Se inserisco un numero grande, il programma termina immediatamente.

    Perchè?? Viene generata un'eccezione?? Come posso gestirla??


  2. #2
    allora

    se va in overflow il programma va in crash, non ti restuisce un valore negativo

    ti restituisce un valore negativo perché quei 4 byte in memoria sono identificati come SIGNED INTEGER tu invece, per evitare valori negativi, devi usare UNSIGNED INTEGER, ovvero uint

    il valore massimo dovrebbe essere sopra ai 4 miliardi (usando un uint) e la metà sopra e sotto lo zero come massimi

  3. #3
    ah oh capito.
    ma se un utente non lo sa, come faccio a controllare se NUMEROINSERITO è > MAXINT e quindi non fare il calcolo? si può gestire l'overflow, tipo stampando "operazione non possibile valore troppo grande" ??

  4. #4
    beh ... dato che l'inserimento è di tipo stringa

    come prima cosa puoi controllare il numero di caratteri e poi instanziarlo in un tipo + grande di uint

    in questo modo sei al sicuro ^^

  5. #5
    .....facendo if(strlen(stringa)>max) { bla bla bla
    http://codecanyon.net/category/all?ref=Manuelandro
    And I bet she told a million people that she'd stay in touch, Well all the little promises they dont mean much,When theres
    memories to be made

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.