mikrocontroller.net

Forum: Compiler & IDEs Verständnisfrage C -> Pascal


Autor: Thomas R. (miparo)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
ich verstehe leider folgende C Schleife irgenwie nicht;
Ich bleibe bei dem < zwischen den Len's hängen.

// Update number of bits
  if ((context->count[0] += ((uint32)inputLen << 3))<((uint32)inputLen << 3))
    context->count[1]++;


In Pascal:
  if context.count[0] = (context.count[1] + (Len shl 3) ?? (Len shl 3)) then
   begin
    Inc(context.count[1]);
   end;

Danke für Eure Hilfe

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Zähl mal die Klammern richtig ab, dann siehst du es :)


[c]
if
(
(context->count[0] += ((uint32)inputLen << 3))
<
((uint32)inputLen << 3)
)

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sicher bin ich mir nicht.
Es habe es mal kompiliert und es geht ohne warnung - staun.

das < ist wie in pascal ein kleiner als. Das liefert true oder false 
zurück. True müsste dann 1 sein und False 0.

Aber es macht kein sinn. Denn der 1.Teil ist ja immer gleich dem 2.Teil
also könnte man es auch weglassen.

((uint32)inputLen << 3))   <   ((uint32)inputLen << 3))

Bist du dir sicher bei dem Code?

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Matthias
Ah das macht jetzt sinn, das hatte ich auch übersehen.

Autor: Thomas R. (miparo)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke

Also in Deutsch so:
if (context.count[0] + (Longword(Len) shl 3)) < (Longword(Len) shl 3)  then
    Inc(context.count[1]);
endif;


Autor: Maik Fox (sabuty) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Aber das += nicht vergessen!
context.count[0] := context.count[0] + (Longword(inputLen) shl 3));
if context.count[0] < (Longword(inputLen) shl 3)  then
    Inc(context.count[1]);

Keine Garantie, Pascal ist schon ne Weile her.

Autor: Thomas R. (miparo)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke Maik.
Ist sich jemand sicher ?
Das sind ja zwei Welten zwischen meiner und Maik's Antwort.
Beides lässt sich Compilieren für aber ja zu unterschiedlichen 
Ergebnissen.

Wobei mir Maik's logischer ist.

Ergänzung:

Maiks ist natürlich Richtig, denn = ist ja eine Zuweisung.

Danke allen.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.