Problema con numero di 12 cifre

di il
6 risposte

Problema con numero di 12 cifre

Ciao a tutti, sto avendo un problema con esercizio in cui ho un numero di ben 12 cifre su un file e quando lo copio con la fscanf non me lo copia mai corretto.
Ho provato a metterlo sia come int che come float e nada, a quel punto sono andato a informarmi e ho letto che:

int Numeri interi (da -2147483648 a 2147483647)
unsigned int Numeri interi positivi (da 0 a 4294967295)
long int Numeri interi (la dimensione coincide con quella di un normale int su una macchina x86)
long long int Numeri interi grandi (da circa -9.22*10^18 a circa 9.22*10^18) SOLO ARCHITETTURA 64bit
unsigned long long int Numeri interi grandi positivi (da 0 a circa 1.84*10^19) SOLO ARCHITETTURA 64bit
float Numeri a virgola mobile (precisione singola)
double Numeri a virgola mobile (doppia precisione, notazione scientifica) SOLO ARCHITETTURA 64bit

Quindi per non copiarlo come stringa ma come numero, come potrei fare?

6 Risposte

  • Re: Problema con numero di 12 cifre

    Ciao,
    puoi leggere questa discussione.

    Comunque prova questo codice:
    
    #include <stdio.h>
    #include <stdlib.h>
    
    int main()
    {
        unsigned long long int numero;
    
        printf("Inserire numero: ");
        scanf("%I64u", &numero);
    
        printf("Numero letto: %I64u", numero);
    
        return 0;
    }
    
    Io ho inserito il numero 123456789012 e funziona correttamente.

    EDIT

    Se sei su Linux, funziona anche il seguente codice:
    
    #include <stdio.h>
    #include <stdlib.h>
    
    int main()
    {
        unsigned long long int numero;
    
        printf("Inserire numero: ");
        scanf("%llu", &numero);
    
        printf("Numero letto: %llu\n", numero);
    
        return 0;
    }
    
  • Re: Problema con numero di 12 cifre

    Si uso Ubuntu, e funzionano entrambi grazie
    Solo che mi viene un dubbio, io sto usando un pc con architettura 64 bit, se usassi un 32? Funzionerebbero lo stesso?
    Perdona la mia ignoranza
  • Re: Problema con numero di 12 cifre

    A n t o n i o ha scritto:


    se usassi un 32? Funzionerebbero lo stesso?
    Ammetto che non lo so... aspettiamo utenti più esperti.
  • Re: Problema con numero di 12 cifre

    Se non ci saranno altre risposte, domani che uso un pc a 32bit provo e vi farccio sapere
  • Re: Problema con numero di 12 cifre

    No.
    Sia su piattaforme a 32 bit che a 64 bit

    sizeof(int) == sizeof(long) = 4 (32 bit)
    sizeof(long long) == 8 (64 bit)

    @Antonio: dove hai trovato quelle castronate relative a SOLO ARCHITETTURA 64bit?

    I double esistono fin dalla versione a 16 bit, e non dipendono dall'architettura della CPU, ma della ALU (coprocessore matematico) la quale, e' vero che oggi e' integrata all'interno dell'integrato della CPU, ma a tutti gli effetti e' un cippone separato (con i suoi registri, le sue istruzioni assembler, ecc).
    Quelli meno giovani si ricorderanno che nel 386, la ALU non c'era proprio e si doveva acquistare a parte.

    Anche il long long esiste nelle piattaforme a 32 bit ed e' un intero a 64 bit.
  • Re: Problema con numero di 12 cifre

    Grazie @migliorabile, sei stato più che esaustivo ! L'ho trovato su un pdf scaricato mentre cercavo soluzioni al problema, e vuoi per interpretazione errata mia o perchè era scitto in modo errato, sono caduto del dubbio.
    Grazie a voi ragazzi, problema risolto
Devi accedere o registrarti per scrivere nel forum
6 risposte