Unsigned int

di il
6 risposte

Unsigned int

Sto guardando diversi esempi e noto che interi di tipo unsigned int sono utilizzati pochissimo, se non ho capito male questa dichiarazione mi permette di definire interi maggiori o uguali a zero "risparmiando" bit per la rappresentazione dei positivi a scapito dei negativi.
Noto però che se passo un intero negativo (parametro attuale) ad una funzione il cui parametro formale è definito come unsigned int, il compilatore non restituisce errori! Mi sarei aspettato il contrario, dove sbaglio?

6 Risposte

  • Re: Unsigned int

    Non hai errori, il valore viene passato e "interpretato" come unsigned int, quindi secondo le regole del complemento a due.
  • Re: Unsigned int

    oregon ha scritto:


    Non hai errori, il valore viene passato e "interpretato" come unsigned int, quindi secondo le regole del complemento a due.
    Non mi torna, se dici che il valore è interpretato come unsigned int non dovrebbe seguire le regole del complemento a due in quanto unsigned int significa intero senza segno. Non capisco...
  • Re: Unsigned int

    Per meglio dire (in effetti non mi sono spiegato per nulla bene) ... viene interpretato come se NON avesse il segno imposto dal complemento a due ...

    Se passi -4 che in binario in complemento a due è

    11111111111111111111111111111100

    tale valore interpretato come unsigned (binario puro) varrà

    4294967292
  • Re: Unsigned int

    Ottimo! Grazie.
    Ma in quali casi conviene utilizzarlo l'unsigned int? Quando c'è un range di interi positivi piuttosto ampio che con la rappresentazione del complemento a due non si riuscirebbe a coprire (escludendo ovviamente il long int)?
  • Re: Unsigned int

    Mi sembra ovvio ... se ti serve un valore che non sarà mai negativo e che possa essere espresso con i bit disponibili.

    Ad esempio, avendo a disposizione interi da 32 bit, se ti servisse memorizzare dei valori interi positivi fino a 3 miliardi, cosa useresti? Un int, un long int o un unsigned int?
  • Re: Unsigned int

    La risposta vien da sè, perfetto!

Devi accedere o registrarti per scrivere nel forum
6 risposte