Ich habe folgenden Fehler
Wenn ich folgende Formel berechne:
1 | ...
|
2 | unsigned int daten_sektor;
|
3 | unsigned int aktuellercluster;
|
4 | unsigned long datensektor;
|
5 | ...
|
6 |
|
7 | stream->datensektor = (vbr.daten_sektor + ((stream->aktuellercluster - 2) * 32));
|
Kommt stream->datensektor nie über 65536.
Wenn ich aber die Formel teile:
1 | ...
|
2 | stream->datensektor = stream->aktuellercluster - 2;
|
3 | stream->datensektor *= 32;
|
4 | stream->datensektor += vbr.daten_sektor;
|
5 | ...
|
Dann wird stream->datensektor korrekt berechnet.
Dies hat mich einiges an spucke gekostet bevor ich diesen fehler
gefunden habe
WinAVR-20090313
gcc -Os
Ist dies ein Bug?