Scanf float e char

di il
6 risposte

Scanf float e char

Salve a tutti, la domanda è sicuramente molto banale, ma non capisco proprio perché l'esercizio non funziona... il codice che ho scritto è:
#include<stdio.h>
int main(){
	char operatore;
	float a,g;
	
	scanf("%f",&a);
	scanf("%f",&g);
	scanf("%c", &operatore);
	
	
	if(operatore=='+')printf("%f\n", a+g);
		else if(operatore=='-')printf("%f\n", a-g);
			else if(operatore=='%')printf("%f\n", (int) a% (int)g);
				else if(operatore=='/') printf("%f\n", a/g);
	
	return 0;
}
Il terminale esegue soltanto le prime due scanf e non quella per "operatore", assegnando alla variabile operatore lo stesso valore di g. Se invece la scanf per operatore la eseguo per prima, il "programma" funziona correttamente (ma per esigenze didattiche devo eseguirla per ultima). Non capisco perchè

6 Risposte

  • Re: Scanf float e char

    Hai visti male perché ovviamente nel char non ci può stare il valore di un float.

    Comunque dovresti risolvere inserendo uno spazio in

    " %c"
  • Re: Scanf float e char

    Più che visto male pensavo che, dato che un char può essere rappresentato con un intero, mi stampasse lo stesso numero con una lettura float (con i decimali a 0), invece no..

    Comunque la soluzione dello spazio funziona, grazie. Sapresti anche spiegarmi perché è necessario quello spazio?
  • Re: Scanf float e char

    Un char è 1 byte binario, un float 8 byte con rappresentazione floating point. Meglio non fare supposizioni ma studiarle...

    Lo spazio rimuove il newline peecedente e accetta il char
  • Re: Scanf float e char

    Lo studio è innegabilmente importante, ma le supposizioni sono alla base della sperimentazione e della pratica, essenziali nell'informatica e nel suo apprendimento, così come tute le altre scienze. Inoltre dubito che chiunque abbia imparato la programmazione senza sbattere la testa su queste cose, per cui il tuo moralismo ipocrita mi sembra fuori luogo.

    Grazie per l'aiuto e per la competenza tecnica, saluti.
  • Re: Scanf float e char

    Il moralismo ipocrita *****.
  • Re: Scanf float e char

    Chiudo il 3d che vedono sta finendo nel flame.
Devi accedere o registrarti per scrivere nel forum
6 risposte