Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2006
    Messaggi
    127

    [c++] Rappresentare infinito come int

    Salve,
    devo inizializzare una variabile di tipo int a infinito,
    ho pensato di assegnarle un valore negativo tipo -1 dato che non ho bisogno di numeri negativi durante il programma,
    vorrei sapere se magari esiste proprio un valore che rappresenta infinito.
    Grazie

  2. #2
    Utente di HTML.it L'avatar di XWolverineX
    Registrato dal
    Aug 2005
    residenza
    Prague
    Messaggi
    2,565
    No, non esiste un numero che rappresenti infinito poiche int rappresenta un numero intero con segno con intervallo fino a 63550 e unsigned int fino a 265 mila se non erro.
    Quindi utilizza -1
    "Se proprio devono piratare, almeno piratino il nostro." (Bill Gates)

    "Non è possibile che 2 istituzioni statali mi mettano esami nello stesso giorno." (XWolverineX)

    http://xvincentx.netsons.org/programBlog

  3. #3
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Intanto parlare di int senza specificare la piattaforma utilizzata, non e' indicativo.

    In una piattaforma a 32 bit, il tipo int e' a 32 bit, ma in una piattaforma a 64 bit, questo e' a 64 bit.

    Supponendo di lavorare con un sistema a 32 bit, e di voler utilizzare un intero a 32 bit senza segno (un unsigned int), allora il valore piu' grande e' determinato da 2 elevato a 32 meno 1 (ovvero 4294967295, in esadecimale 0xFFFFFFFF). Dato che vuoi trattare valori senza segno e che userai un unsigned int a 32 bit, ti sconsiglio di usare il valore -1 ma scrivere

    codice:
    unsigned int x = 0xFFFFFFFF;
    Se includi il file limits.h, puoi utilizzare delle costanti apposite, ad esempio

    UINT_MAX

    che e' il valore massimo raggiungibile dall'unsigned int. Il codice quindi sara'

    codice:
    #include <limits.h>
    
    unsigned int x = UINT_MAX;
    P.S. Per XWolverineX ... i valori che hai indicato non sono corretti ... rivedili ...

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2006
    Messaggi
    127
    chiarissimo, purtroppo ho riscontrato un problema, devo utilizzare anche numeri negativi, rappresento infinito con il massimo valore intero possibile ? (32 bit)

    volendo posso anche cambiare tipo di variabile(float per esempio potrebbe andare bene).

  5. #5
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,463
    Originariamente inviato da tulkas85
    chiarissimo, purtroppo ho riscontrato un problema, devo utilizzare anche numeri negativi, rappresento infinito con il massimo valore intero possibile ? (32 bit)
    Ciò che puoi o non puoi fare dipende dall'uso che fai del tuo valore.

    Originariamente inviato da tulkas85
    volendo posso anche cambiare tipo di variabile(float per esempio potrebbe andare bene).
    Non risolve il tuo problema: anche quei valori hanno un minimo ed un massimo, oltre al fatto che sono influenzati da un errore di precisione.

    Non potresti semplicemente prevedere un "flag" o qualcosa di simile in grado di segnalare se il valore corrisponde ad un infinito?

    Oppure inglobare il tuo valore in una struttura a cui puoi affiancare, oltre al valore vero e proprio, tutti i flag e le opzioni che desideri.

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

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

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da tulkas85
    chiarissimo, purtroppo ho riscontrato un problema, devo utilizzare anche numeri negativi, rappresento infinito con il massimo valore intero possibile ? (32 bit)

    volendo posso anche cambiare tipo di variabile(float per esempio potrebbe andare bene).
    Se devi usare il segno, il valore massimo con 32 bit sara', ovviamente, uguale a 2147483647 e potrai usare la costante INT_MAX

    Se vuoi usare un float (se lo devi usare o no, dipende dal tuo problema che io non conosco ...) puoi scrivere

    codice:
    #include <float.h>
    
    float x = FLT_MAX;
    in modo da utilizzare l'apposita costante FLT_MAX che rappresenta il valore massimo rappresentabile con un float.

  7. #7
    Utente di HTML.it
    Registrato dal
    Jan 2006
    Messaggi
    127
    grazie tutto chiaro, penso che urilizzerò un int max...

  8. #8
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    non esiste in c++ qualcosa come INFINITY di java?

    non mi ricordo se è Number.INFINITY o Math.INFINITY o qualcosa di simile...

    ciao

  9. #9
    Originariamente inviato da Alex'87
    non esiste in c++ qualcosa come INFINITY di java?

    non mi ricordo se è Number.INFINITY o Math.INFINITY o qualcosa di simile...

    ciao
    codice:
    #include <limits>
    tramite questa funzione
    codice:
    float numeric_limits<float>::infinity()

  10. #10
    Utente di HTML.it
    Registrato dal
    Jan 2006
    Messaggi
    127
    tramite questa funzione

    code:--------------------------------------------------------------------------------
    float numeric_limits<float>::infinity()
    --------------------------------------------------------------------------------
    non esiste anche per gli interi ??

    INT_MAX non và bene xkè se :
    x=INT_MAX; //il mio infinito
    x=x+5; // x diventa un numero negativo... mentre deve rimanere infinito !!

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.