Domanda Risolto Problemi con variabili e specificatori di formato in C

Cristian_fighter

Utente Silver
2 Giugno 2016
58
25
2
59
Salve ragazzi ho un problemino talmente sciocco che mi vergogno anche ad esporlo, visto che è come se la mia mente avesse rimosso questa cosa. Dato un mio programma dovevo prendere in ingresso un numero intero e restituirlo in float quindi ho fatto:
C:
#include <stdio.h>
#include <stdlib.h>
int main (){
int Numero;
printf("Scrivi un numero: ");
scanf("%d",&Numero);
printf("Numero in float: %f",Numero);
}

Non riesco a capire perché il programma mi restituisca 0.0000.. qualsiasi valore metta, e poi vi domando vidi da qualche parte come manipolare il numero di cifre dopo la virgola da mostrare qualcuno sa indicarmelo?
 
Ciao, la spiegazione è descritta nello standard internazionale del C ( link: http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf) nel paragrafo 7.16.1.1, ecco un estratto
If there is no actual next argument, or if type is not compatible with the type of the actual next argument (as promoted according to the default argument promotions), the behavior is undefined, except for the following cases:
— one type is a signed integer type, the other type is the corresponding unsigned integer type, and the value is representable in both types;
— one type is pointer to void and the other is a pointer to a character type.


Per risolvere il problema ti basta convertire la tua variabile Numero in float con l'operatore di casting (float), per controllare il numero di cifre dopo la virgola (che di default sono 6) ti basta aggiungere allo specificatore di conversione il numero di cifre che vuoi dopo la virgola nel seguente modo:
%.nf dove n rappresenta il numero di cifre: esempio per 2 cifre %.2f, per 3 %.3f ecc....
Ho modificato il codice ed il problema dovrebbe essere risolto.
C:
#include <stdio.h>
#include <stdlib.h>
int main () {
  int Numero;
  printf ("Scrivi un numero: ");
  scanf ("%d", &Numero);
  printf ("Numero in float: %.2f", (float) Numero);    //.2 rappresenta il numero di cifre dopo la virgola
}
L'output è il seguente.
Codice:
Scrivi un numero: 12                                                                                                           
Numero in float: 12.00
Messaggio unito automaticamente:
 
  • Mi piace
Reazioni: Cristian_fighter
Ti ringrazio,gentilissimo non mi ero ancora imbattuto in questo problema sino ad ora. Figurati che mi è nato esercitandomi nella creazione di funzioni e sono andato in palla all'improvviso ahahhaahah