Absolute Anfänger Programmierer und fragte mich, ob Sie mir helfen könnten, einige Ergebnisse und Begriffe zu verstehen. Ich versuche, der Programmlogik zu folgen und bestimmte Werte auszuarbeiten. Der folgende Fall ist ein Beispiel, um diese Konzepte zu verstehen.Understanding Doppel-und Ganzzahlen
#include <stdio.h>
void main()
{
int inum = 11;
double dnum = 2.56;
double dec_result;
int int_result;
dec_result = inum/4 + (3.0 * inum)/5;
printf("value in dec_result is %.2f\n", dec_result);
dec_result = (double) inum/4 + (3 * inum)/5;
printf("value in dec_result is %.2f\n", dec_result);
int_result = (int) dnum * 10 + 1;
printf("value in int_result is %d\n", int_result);
int_result = (int) (dnum * 10 + 1);
printf("value in int_result is %d\n", int_result);
}
Ich kenne die Ergebnisse, wie ich es durch Visual Basic ausgeführt habe. Woran ich zu kämpfen habe, ist, wie es funktioniert.
Meine Arbeiten:
inum
und dnum
ich sind davon ausgehen, Namen für Werte 'und austauschbar mit x oder y sagen verwendet werden könnten. Gleiches mit int_result
und dec_result
.
Erst dec_result ist 8,60
dec_result = inum/4 + (3.0 * inum)/5;
11 (an integer)/4 + (3.0 * 11)/5
11 (an integer)/4 + (33.0)/5
Dann bin ich ein wenig verloren ... 2.75 + 6.6?
Da inum eine ganze Zahl ist, wird der Wert abgeschnitten, wenn er als Bruch geschrieben wird. Aber wie in den Klammern verbleibenden inum wird zuerst multipliziert, dann wird es eine Dezimalstelle Nummer?
Es wird als Dezimalstellen angezeigt, wie vom Platzhalter angegeben und vom Datentyp double angegeben.
Zweite dec_result ist 8,75
dec_result = (double) inum/4 + (3 * inum)/5;
= as double is a cast operator you change inum from int to double, so therefore:
= (double) inum/4 + (33)/5;
Then = inum/4 becomes 2.75 + 33/5
Warum das 33/5 Bit 6 werden? Es wird als Dezimalstellen angezeigt, wie vom Platzhalter angegeben und vom Datentyp double angegeben.
int_result = (int) dnum * 10 + 1;
= cast operator alters dnum a double to integer so 2.56 becomes 2
= 2 * 10 + 1
= 20 + 1
= 21
sollte eine ganze Zahl, wie vor der Klammer angegeben und auch %d
Platzhalter ist der Wert, Zahl ohne Dezimalpunkt bereitzustellen.
int_result = (int) (dnum * 10 + 1);
Ich habe: = (int) (2,56 * 10 + 1) = (int) (25,6 + 1) = (int) (26,6) = 26
weil der Wert sollte eine Ganzzahl sein, wie vor der Klammer angegeben und auch %d
Platzhalter bedeutet, den Wert als Zahl ohne Dezimalpunkt bereitzustellen.
Ist meine Logik korrekt?
Danke beide, ich war wirklich kämpfen, um die Logik zu verstehen, aber ich denke, es jetzt haben! – Newtoprogram