Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Sc4v

Alter Hase

  • »Sc4v« ist der Autor dieses Themas

Beiträge: 376

Beruf: Student

  • Private Nachricht senden

1

02.03.2010, 20:57

byte * byte = int [java]

Hi zusammen,

ich bin beim programmieren auf ein Problem gestoßen. Ich stieg von C++ auf Java um (aus schulischen Gründen) und wollte ein Programm in dieser Art schreiben...

public class XXX
{
public static void main (String[] args)
{
byte z1 = 3;
byte z2 = 4;
byte z3 = z1 * z2;
}
}

Jetzt sagt mir der Compiler, dass aus der Multiplikation ein Integer entsteht... warum das? Ich hoffe ihr könnt mir helfen.
Man könnte das zwar mit typecast lösen, aber ich will wissen wieso aus byte*byte ein int entsteht =)

Lg
Sc4v

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

2

02.03.2010, 20:59

ich vermute der compiler geht davon aus, dass man bei einer multiplikation wahrscheinlich zu größe zahlen für einen byte bekommt.
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

Helmut

5x Contest-Sieger

Beiträge: 692

Wohnort: Bielefeld

  • Private Nachricht senden

3

03.03.2010, 00:11

Genauso ist es. Ist aber auch bei C++ so, selbst wenn man nur addiert. Und ja, es ist scheiße, aber man kanns halt nicht ändern.
Sei stets geduldig gegenüber Leuten, die nicht mit dir übereinstimmen. Sie haben ein Recht auf ihren Standpunkt - trotz ihrer lächerlichen Meinung. (F. Hollaender)

Databyte

Alter Hase

Beiträge: 1 040

Wohnort: Na zu Hause

Beruf: Student (KIT)

  • Private Nachricht senden

4

03.03.2010, 08:14

Wiso willst überhaupt "byte" benutzen ?

Sc4v

Alter Hase

  • »Sc4v« ist der Autor dieses Themas

Beiträge: 376

Beruf: Student

  • Private Nachricht senden

5

03.03.2010, 17:06

hi,
achso ja hatte ich mir fast gedacht...
ich mache Java eigentl nur, da ich darüber ein Referat halten muss. Ich benutze byte aus dem Grund, weil dieses Programm die Datentypen verdeutlichen soll (Mitschüler kennen bis dato nur JavaScript).
Wenn ich denen da was von Bereichen erzähle und benutze dann für die Zahl 4 einen integer, der bis in den millionenbereich geht, dann bekomme ich wieder unschöne Fragen gestellt. Ich werde es jetzt aber mit integern machen und denen das so erklären wie ihr es mir erklärt habt.

Lg und dankeschön
Sc4v

PS: achja, float und double sind für fließkommazahlen soweit klar, aber was sind denn die größten (nicht die genausten) Zahlen die ein float und ein double darstellen kann? Könnte ich 12341293.1231 mit einem double darstellen? Wo endet der float?

Databyte

Alter Hase

Beiträge: 1 040

Wohnort: Na zu Hause

Beruf: Student (KIT)

  • Private Nachricht senden

6

03.03.2010, 17:08

Aber wirft Java nicht ne Exception, wenn man einen overrun hat ?

PS: Du kannst mit "(byte)" nach byte casten, aber ob das das ist was du willst....

Sc4v

Alter Hase

  • »Sc4v« ist der Autor dieses Themas

Beiträge: 376

Beruf: Student

  • Private Nachricht senden

7

03.03.2010, 17:12

ja denke schon (noch nicht ausprobiert) aber ich habe ja keinen overflow

ich habe ja im erstem post geschrieben, dass ich nicht casten will sondern verstehen will warum java automatisch einen integer erstellt. Nehme jetzt einfach mal an das ist so festgelegt worden, da die Entwickler Fehlerquellen minimieren wollen.

achja, float und double sind für fließkommazahlen soweit klar, aber was sind denn die größten (nicht die genausten) Zahlen die ein float und ein double darstellen kann? Könnte ich 12341293.1231 mit einem double darstellen? Wo endet der float?

Lg Sc4v

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

8

03.03.2010, 18:05

je höher eine zahl ist desto weniger genau ist sie. das ist ja das besondere an fließkommazahlen.
http://de.wikipedia.org/wiki/IEEE_754#Za…E-754-Standards
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

9

03.03.2010, 23:37

Zitat von »"Helmut"«

Genauso ist es. Ist aber auch bei C++ so, selbst wenn man nur addiert. Und ja, es ist scheiße, aber man kanns halt nicht ändern.
Das stimmt zwar, aber in C++ fällt dieses Verhalten aufgrund der impliziten Konvertierung zwischen arithmetischen Datentypen nicht so stark auf.

Werbeanzeige