Return -1

di il
16 risposte

Return -1

Buonasera a tutti.
Sono un neo iscritto e sto tornando a programmare in C++ dopo quasi un decennio.
Allora il mio problema è questo: ho scritto una semplice funzione per la ricerca binaria, la quale mi ritorna la posizione della chiave nell'array quando questa è presente e "-1" se la chiave non è contenuta sull'array.
Solamente che compilando in quest'ultimo caso non mi ritorna il "-1" ma 4294967295, che è il valore più elevato per una variabile unsigned in un sistema a 32 bit.
Ma se io volessi visualizzare il "-1" cosa dovrei fare?
Ringrazio anticipatamente tutti coloro che risponderanno.

16 Risposte

  • Re: Return -1

    Ovviamente non deve essere unsigned
  • Re: Return -1

    Grazie innanzitutto per la risposta. Ma se io definisco la mia variabile: int pos ------> non è sottinteso che è di tipo signed?
  • Re: Return -1

    oregon ha scritto:


    Ovviamente non deve essere unsigned
    Grazie innanzitutto per la risposta.
    Ma se io definisco la mia variabile: int pos; ------> non è sottinteso che pos è di tipo signed?
  • Re: Return -1

    Qualche altro parere gentilmente
  • Re: Return -1

    Non do pareri, ma risposte.
    ovviamente non c'è differenza tra signed e unsigned, i bit sono quelli.
    è la funzione che usi per stampare i dati che scriverà - 1 oppure 4 miliardi.
  • Re: Return -1

    Ma la funzione restituisce un unsigned?
  • Re: Return -1

    Quale differenza c'è secondo te tra signed e unsigned?
  • Re: Return -1

    Signed tiene conto del segno dell'intero, unsigned no.
    Comunque documentandomi mi è parso di capire che il main non può restituire il -1
  • Re: Return -1

    +m2+ ha scritto:


    Quale differenza c'è secondo te tra signed e unsigned?
    O meglio con signed è possibile rappresentare l'intero col segno, mentre dichiarandolo unsigned è privo di segno
  • Re: Return -1

    Ma scusa hai ancora problemi? Mi sembra chiaro. È solo una questione di interpretazione del dato. I bit sono sempre quelli, vengono interpretati come binario puro o complementi a due.

    Se non è così ragioniamo sul tuo codice
  • Re: Return -1

    oregon ha scritto:


    Ma scusa hai ancora problemi? Mi sembra chiaro. È solo una questione di interpretazione del dato. I bit sono sempre quelli, vengono interpretati come binario puro o complementi a due.

    Se non è così ragioniamo sul tuo codice

    Allora entro più nel dettaglio.
    Ho scritto la funzione Ricerca_Bin, di tipo int, e mi restituisce correttamente il -1 se la chiave non è nell'array che le viene passato.
    Nel return del main volevo fare tornare lo stesso valore tornato dalla funzione descritta prima quindi ho scritto:

    int main() {
    ....

    return Ricerca_Bin(v[], N, x); // N è la dimensione del vettore e x la chiave, entrambi int
    }

    Quando Ricerca_Bin ritorna -1, il main invece mi ritorna 4294967295
  • Re: Return -1

    Non fai prima a postare l'intero codice (utilizzando gli appositi tag code)?!
  • Re: Return -1

    Non serve altro codice ...

    Come controlli il valore restituito del main?
  • Re: Return -1

    oregon ha scritto:


    Non serve altro codice ...

    Come controlli il valore restituito del main?
    Lo visualizzo al termine dell'esecuzione.
    Comunque sono un idiota e mi scuso per avervi fatto perdere tempo. Il mio scopo era quello di stampare il valore ritornato da Ricerca_Bin e non farlo ritornare al main.
Devi accedere o registrarti per scrivere nel forum
16 risposte