Etwas spät, aber:
@Läubi:
Ich bin wie Martin davon ausgegangen, dass alle beteiligten Variablen
(Zeiger1, Zeiger2 und differenz) vom Typ int sind (wie bei Indizes
üblich). Deswegen hat das & 255 schon eine Bedeutung.
Du hast aber recht, wenn differenz ein unsigned char und 8 Bit breit
ist. Dann kann man das & 255 weglassen.
Aus Portabilitätsgründen würde ich aber auch in diesem Fall dazu
tendieren, die das & 255 beizubehalten. Stören tut's nicht und mit
etwas Glück wird es in den Fällen, wo es nicht benötigt wird,
wegoptimiert.
@Martin:
> Das stimmt nicht was du schreibst. Rechne nochmal alle möglichkeiten
> durch.
Habe ich, die beiden Ausdrücke
differenz = ((Zeiger1 + 256) - Zeiger2) & 255
und
differenz = (Zeiger1 - Zeiger2) & 255
liefern für alle Zeiger1 und Zeiger2 aus [0, 255] das gleiche
Ergebnis. Oder reden wir vielleicht irgendwo aneinander vorbei?
> Ist index1 und index2 ein char-Wert bleibt nur noch
> differenz = index1-index2
> übrig
Stimmt, aber unsigned char passt besser, da dann auch Differenzen >127
als positive Zahlen repräsentiert werden.