Informatiker Board (http://www.informatikerboard.de/board/index.php)
- Themengebiete (http://www.informatikerboard.de/board/board.php?boardid=1)
-- Informatik in der Schule (http://www.informatikerboard.de/board/board.php?boardid=21)
--- Warum klappts mit int und float nur mit Double nicht? (http://www.informatikerboard.de/board/thread.php?threadid=3052)


Geschrieben von tumu36 am 25.05.2016 um 14:50:

  Warum klappts mit int und float nur mit Double nicht?

Hi Leute!
Ich nutze C und die Aufgabe ist eigentlich ganz einfach. Und zwar geht es darum, 2 Zahlen vom Typ double einzugeben, diese miteinander zu vergleichen und dann die kleinere Zahl Ausgeben lassen.

Mein Programm sieht wie folgt aus und funktioniert, wenn ich statt den gewünschten Double, Integer oder Float Variablen nehme! So wie es jetzt hier steht gibt es immer "0.00000 is smaller than 0.00000" aus. unglücklich


#include <stdio.h>

int main()
{
double num1=0.00, num2=0.00;

printf("Enter the numbers you want to compare:\n");
scanf("%f", &num1);
scanf("%f", &num2);

if(num1<num2){
printf("%f is smaller than %f!", num1, num2);
}else{
printf("%f is smaller than %f!", num2, num1);
}

return 0;
}

Was mache ich falsch und warum klappts mit den doubles nicht?



Geschrieben von eulerscheZahl am 25.05.2016 um 16:04:

 

Und deshalb schaut man sich die Warnungen des Compilers an.
code:
1:
2:
3:
4:
5:
6:
code.c: In function ‘main’:
code.c:8:7: warning: format ‘%f’ expects argument of type ‘float *’, but argument 2 has type ‘double *’ [-Wformat=]
 scanf("%f", &num1);
       ^
code.c:9:7: warning: format ‘%f’ expects argument of type ‘float *’, but argument 2 has type ‘double *’ [-Wformat=]
 scanf("%f", &num2);


Wenn du ein double hast, musst du mit %lf einlesen.


Forensoftware: Burning Board, entwickelt von WoltLab GmbH