Quando eseguo questo codice mi 1610612736Come moltiplicare il float con gli interi in C?
void main(){
float a=3.3f;
int b=2;
printf("%d",a*b);
}
Perché e come risolvere questo problema si restituisce?
modifica: Non è nemmeno una questione di integer e float, se i sostituire int b = 2: dal galleggiante b = 2.0f esso restituisce lo stesso risultato stupido
È una questione di numero intero e fluttuante - vedere la mia risposta. –
@Carl ha ragione. Potrebbe non essere un problema float/int con la moltiplicazione stessa, ma _definitamente_ è nella stringa di formato. – paxdiablo
La funzione 'printf' è un metodo * varargs *, con firma' int printf (const char * format, ...) '. Ciò significa che accetta argomenti arbitrari dopo il primo, e non può controllarli in fase di compilazione o * trasmetterli a un tipo desiderato preso dalla stringa di formato *. La stringa di formato dice '% d', che cerca un' int'. L'espressione 'a * b' è' float', che viene convertita in 'double'. Questi tipi non hanno nemmeno la stessa dimensione di memoria, quindi il 'doppio' temporaneo viene fisicamente tagliato a metà e trattato come un' int'. Questa non è una soluzione di Salomone. –