Warum gibt ein Bruch in C++ den Wert Null zurück?

3 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Informiere dich mal über den Begriff "typecasting".

Wenn du folgenden Code hast:

float test = 1/2;

Dann initialisiert das Programm erstmal eine Variable, dann rechnet es die Division der Integers 1/2 durch und schreibt das Ergebnis in den dazugehörigen Speicherplatz. Der springende Punk ist, dass Integer-division durchgeführt wird, in dieser wird immer abgerundet. Es gilt also 1/2 = 0.

Du kannst dem Programm sagen, dass es keine Integerdivision durchführen soll, indem du typecastest, also eine der beiden Zahlen zu einer float machst, dann wird normale float-division durchgeführt.

Beispiel:

float test = ( (float) 1)/2;

Oder einfacher:

float test = 1./2;

Sobald du 1. schreibst, wird die 1 als eine Fließkommazahl interpretiert und ist automatisch eine float.

LG

1 ist ein integer , 2 ist auch ein integer , wenn du 1 durch 2 teilst, ist das also eine Integerdivision, und somit ist das Ergebnis auch ein Integer, wird also abgerundet zu 0. Dass das danach einem float zugewiesen wird ist dem Compiler in dem Moment der Rechnung wohl egal.

Weise ihm doch mal 1.0 / 2.0 zu oder oder 1.0f / 2.0f oder caste deine Integer auf einen float oder double bevor du sie verrechnest oder ändere die Rundung von Integer von "Nachkommastellen vergessen" auf richtige Rundungsregeln, damit dann 1 statt 0 rauskommt, was dir auch nichts helfen wird.