Für dieses Forum muß Javascript im Browser aktiviert werden!
Kommentar: Einfügen von HTML im Kommentar: Link einfügen: <a href="LINKURL" target="_blank">LINKTITEL</a> Bild einfügen: <img src="BILDURL"> Text formatieren: <b>fetter Text</b> <i>kursiver Text</i> <u>unterstrichener Text</u> Kombinationen sind auch möglich z.B.: <b><i>fetter & kursiver Text</i></b> C2 Quellcode formatieren: <code>Quellcode</code> ASM Quellcode formatieren: <asm>Quellcode</asm> (Innerhalb eines Quellcodeabschnitts ist kein html möglich.) Wichtig: Bitte mache Zeilenumbrüche, bevor Du am rechten Rand des Eingabefeldes ankommst ! > Hallo Olaf! > > > da C2 ja eine getypte Sprache ist könnte der Compiler auch mal auf die linke Seite schauen, > > wie es "richtige" Programmiersprachen, wie z.B. Java tun. ... > > Deine Einteilung in richtige und falsche Programmiersprachen läuft hier ziemlich ins Leere. Auch dass > du C und Java diesbezüglich vergleichst, lässt auch auf wenig Kenntnis bei Programmiersprachen und > Compilern schließen. > > C wurde entwickelt, um den verschiedensten Assembler-Sprachen eine strukturierte und > standardisierte Programmiersprache gegenüber zu stellen. Aus diesem Grund ist C <u>immer > maschinennah</u> und hängt im Verhalten von der Wortbreite des Prozessors ab. Entsprechend > verhalten sich C-Programme unterschiedlich, je nachdem, ob sie auf 16-, 32- oder 64-Bit-Prozessoren > (um nur die gängigsten heraus zu greifen) laufen. Dies trifft ganz besonders auf Schiebe-Operatoren > zu, und der hat in C (Operator << bzw. >>) den Typ des linken Operanden, unabhängig vom rechten. > Wenn ich mich auf einem 16-Bit-Prozessor befinde, und ich programmiere die Expression 1<<25, > dann erhalte ich - ja nach Prozessor - 0 oder (-1). Will ich als Ergebnistyp long erzwingen, benötige > ich entweder eine die cast ((long int) 1)<<25 oder eine long-Konstante: 1L<<25. > > Java wurde entwickelt, um - auf den Konzepten von C++ aufbauend - eine Programmiersprache zu > definieren, deren Programme sich auf allen Plattformen <u>immer gleich</u> verhalten. Deshalb laufen > Java-Programme auch nie direkt auf einem Prozessor sondern in einer virtuellen 32-Bit-Maschine, die > die Umsetzung für den jeweiligen Prozessor vornimmt. Hier gibt es auch den einzigen Konnex zur > VMC der C-Control II, nur handelt es sich bei der VMC eben um eine virtuelle <b>16-Bit-</b>Maschine. > > Abgesehen davon ist mir kein einziger Compiler bekannt, der sich bei der Auswertung von Operanden > danach richtet, welchen Typ die Variable hat, die das Ergebnis des gesamten Ausdruckes erhält. Alle > Compiler werten zuerst den Ausdruck aus, und erst im Zuge der Zuweisung kommen - falls notwendig - > neurliche Typ-Umwandlungen zum tragen, um die Typen von Variable und Ausdruck mit einander > kompatibel zu machen. > > Man kann also wirklich nur zusammen fassen, dass die VMC korrekt und den Spezifikationen > entsprechend arbeitet. Alle anderen Ergebnisse wären bei einer 16-Bit-VM sogar als Bug zu > interpretieren. > > Beste Grüße, > Dietmar.