Conversioni di tipo

di il
3 risposte

Conversioni di tipo

Ciao a tutti, qualcuno mi può spiegare per quale motivo il valore che mi stampa della 'b' è 65532?
grazie mille



#include <stdio.h>


long int fun2(int p){
return (p + 'g' - 'b');}

int fun1(long p){
char a = 'i';
return fun2 (p - a + 'a');}

int main(void){
unsigned short a = -1LL;
double b = fun1(a);
printf("%f\n", b);
}

3 Risposte

  • Re: Conversioni di tipo

    Non è vero che il risultato fa 65532 sempre: dipende dalla macchina
    -1LL è sicuramente un numero con tutti i bit a 1, quindi a deve per forza essere il massimo unsigned short possibile, che su molte macchine è 65535 (ma non è vero sempre!)
    65535 - 'i' +'a', da tabella ASCII, è 65535 - 105 + 97 = 65527
    65527 + 'g' - 'b' = 65527 + 103 - 98 = 65532 che castato a double rimane uguale
  • Re: Conversioni di tipo

    Usa i tag 'CODE' (pulsante '</>' dell'editor).
    Che cosa ti aspetti invece?
  • Re: Conversioni di tipo

    Ora ho capito grazie mille!
Devi accedere o registrarti per scrivere nel forum
3 risposte