Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 24
  1. #1

    [C] Aumentare grandezza variabile integer

    Ciao a tutti,

    premetto che questa richiesta potrà sembrarvi insolita e stupida (e forse lo è ).

    Allora, ho intenzione di scrivere un programma che maneggi numeri MOLTO grandi (> 1.000.000 per intenderci).

    Ho notato però che se eseguo un listato di questo tipo:

    codice:
    # include <stdio.h>
    
    int x,i,esp;
    
    int main(int argc, char * argv[]) {
    
    if (argc < 2) {
    	printf ("Uso: %s numero\n", argv[0]);
    	exit (0);
    }
    
    x = atoi(argv[1]);
    
    printf ("%d", x); 
    
    }
    Il valore di x è troncato alle prime 10 cifre.

    Come faccio a togliere questa limitazione?

    Ho anche provato ad usare long, senza risultati.

    Grazie a chiunque mi aiuterà.

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,296

    Moderazione

    Il linguaggio di programmazione va indicato anche nel titolo, come da Regolamento.

    Di cosa si tratta? C? C++?

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    OOOpps

    Corretto al volo!

    Si tratta di C.

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Numeri maggiori di un milione ... ma fino a quanto ?

    Comunque puoi utilizzare un double ...

  5. #5
    E' proprio questo il punto

    Come posso accettare per esempio 10.000.000.000 ?

    Unsigned int arriva fino a +4,294,967,295

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Il double non ti va bene?

  7. #7
    Io vorrei trattare i numeri come integers

  8. #8
    Originariamente inviato da mikispag
    Io vorrei trattare i numeri come integers
    hai un po' di soluzioni...


    ti crei una struttura con N campi unsigned long int quindi avrai 32xN bit a disposizione.

    dovrai solo stare attento alle operazioni che fai su di essi...
    DYNAMIC+ [ E-mail ]

    Secondo me non si può fare!

  9. #9
    Utente di HTML.it L'avatar di XWolverineX
    Registrato dal
    Aug 2005
    residenza
    Prague
    Messaggi
    2,565
    Basta che usi un double e poi gli fai un cast sopra
    In C purtroppo non lo so fare, ma se fosse in C++ faresti

    codice:
    double Numero = 1029381209382; 
    //Operazione da fare: Numero + 1000
    //Per trattarlo come int fai
    static_cast<int>(Numero);
    In questo modo il compilatore tratterà quel double come un semplice int

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Originariamente inviato da mikispag
    Io vorrei trattare i numeri come integers
    Puoi usare interi a 64 bit se supportati dal compilatore che usi (che non so quale sia).

    Se non devi fare particolare operazioni, i double dovrebbero comunque andare bene. Non so cosa devi fare e perche' hai la necessita' di usare interi ...

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 © 2024 vBulletin Solutions, Inc. All rights reserved.