n° 185
Maggio/Giugno 2013
Maggio 22, 2013, 04:10:58 pm *
Benvenuto! Accedi o registrati.
Hai dimenticato l'e-mail di attivazione?

Accesso con nome utente, password e durata della sessione
Notizia:
 
   Indice   Linux Windows Techassistance Gameassistance videogame hardware Aiuto Ricerca Agenda Downloads Accedi Registrati  

* Messaggi recenti
Messaggi recenti
Pagine: [1]   Vai giù
  Stampa  
Autore Discussione: Domanda sulla dimensione massima di un numero un C  (Letto 290 volte)
0 utenti e 1 Utente non registrato stanno visualizzando questa discussione.
wolverine48
Newbie
*

Karma: +0/-0
Scollegato Scollegato

Messaggi: 2


Mostra profilo E-mail
« inserita:: Maggio 11, 2012, 07:17:22 pm »

Salve a tutti, sono nuovo di questo forum e mi sto da pochi giorni accostando alla programmazione in C.
Oggi stavo scrivendo un programma che mi eseguisse delle somme, con il ciclo do while, ma ho incontrato un inghippo.
Quando mando in esecuzione, il programma funziona, pero' quando arriva ad un numero di 10 cifre, il successivo diventa negativo e cosi procede verso lo zero e poi nei positivi, in un ciclo "perpetuo".
Vorrei capire se fosse possibile e come, rimuovere il limite sul numero di cifre, o almeno cambiarlo in uno a piacere.

Grazie in anticipo per le eventuali risposte
Registrato
M.A.W. 1968
** LEGGETE IL REGOLAMENTO ! **
Global Moderator
Hero Member
*****

Karma: +204/-15
Scollegato Scollegato

Messaggi: 2706


Discrete And Combinatorial Mathematics


Mostra profilo WWW
« Risposta #1 inserita:: Maggio 11, 2012, 07:23:21 pm »

Il seguente sorgente C, già proposto più volte in numerose salse su questi forum e altrove, mette a confronto neofiti e non con i limiti dei tipi numerici di default supportati dai vari compilatori x86 (e oltre).

Si veda anche questo breve articolo per ulteriori indicazioni in merito.

Codice:
#include <stdio.h>
#include <limits.h>
#include <float.h>

#if defined(__BORLANDC__) || defined(__TURBOC__)
    const char Compiler[] = "** Compiled with Borland C++"
                            "                              **";
#endif
#ifdef _MSC_VER
    const char Compiler[] = "** Compiled with Visual C/C++"
                            "                             **";
#endif
#ifdef __WATCOMC__
    const char Compiler[] = "** Compiled with Open Watcom"
                            "                              **";
#endif
#ifdef __DMC__
    const char Compiler[] = "** Compiled with Digital Mars"
                            "                             **";
#endif

/* Versione assai approssimativa e pressapochista, ma utile */
#if defined(UINT64_MAX) && !defined(_UI64_MAX)
 #define _UI64_MAX UINT64_MAX
 #define _I64_MAX  INT64_MAX
 #define _I64_MIN  INT64_MIN
#endif

#define HSEP_STAR "************************************************************"
#define HSEP_LINE  "------------------------------------------------------------"

int main(void)
{
    puts("\n" HSEP_STAR);
    puts(Compiler);
    puts(HSEP_STAR);
    printf("- unsigned:\n"
           "char...........: [0, %u] (%d bits per char)\n",
           UCHAR_MAX, CHAR_BIT);
    printf("short int......: [0, %u]\n", USHRT_MAX);
    printf("int............: [0, %u]\n", UINT_MAX);
    printf("long int.......: [0, %lu]\n", ULONG_MAX);
#ifdef _UI64_MAX
    printf("long int 64....: [0, %I64u]\n", _UI64_MAX);
#endif
    puts(HSEP_LINE);
    printf("- signed:\n"
           "char...........: [%d, %d]\n", SCHAR_MIN, SCHAR_MAX);
    printf("short int......: [%d, %d]\n", SHRT_MIN, SHRT_MAX);
    printf("int............: [%d, %d]\n", INT_MIN, INT_MAX);
    printf("long int.......: [%ld, %ld]\n", LONG_MIN, LONG_MAX);
#ifdef _I64_MAX
    printf("long int 64....: [%I64d, %I64d]\n", _I64_MIN, _I64_MAX);
#endif
    puts(HSEP_LINE);
    printf("float..........: [%g, %g]\n", FLT_MIN, FLT_MAX);
    printf("double.........: [%g, %g]\n", DBL_MIN, DBL_MAX);
    printf("long double....: [%Lg, %Lg]\n", LDBL_MIN, LDBL_MAX);
    puts(HSEP_LINE);
    printf("FLT_EPSILON....: %g\n", FLT_EPSILON);
    printf("DBL_EPSILON....: %g\n", DBL_EPSILON);
    printf("LDBL_EPSILON...: %Lg\n", LDBL_EPSILON);
    puts(HSEP_STAR);

    return (0);
}
Registrato

I Moderatori invitano tutti gli utenti a prendere visione del REGOLAMENTO e a rispettarlo.

Un blog? Io? Occhiolino
wolverine48
Newbie
*

Karma: +0/-0
Scollegato Scollegato

Messaggi: 2


Mostra profilo E-mail
« Risposta #2 inserita:: Maggio 11, 2012, 08:47:53 pm »

Ringrazio infinitamente per la risposta, L'articolo inoltre mi e' stato davvero utilissimo, appena tornero' al mondo civilizzato provero' sicuramente ad implementare qualcosa
Registrato
Pagine: [1]   Vai su
  Stampa  
 
Vai a:  

Copyright © 2011 Edizioni Master SpA. p.iva : 02105820787

Tutti i diritti di proprietà letteraria e artistica riservati. - Privacy



Links to Page