Hallo alle zusammen :-)
Ich bin gerade beim programmieren auf ein Problem gestoßen.
Es geht um folgenden Code
1 | EEPROM_DatenWerte.versionderEepromstruktur[0] =0;
|
2 | EEPROM_DatenWerte.versionderEepromstrukturInvertiert[0] =255;
|
3 |
|
4 | test[0] = (~(EEPROM_DatenWerte.versionderEepromstrukturInvertiert[0]));
|
5 | test[1] = EEPROM_DatenWerte.versionderEepromstruktur[0];
|
6 |
|
7 | if((EEPROM_DatenWerte.versionderEepromstruktur[0]) !=
|
8 | (~(EEPROM_DatenWerte.versionderEepromstrukturInvertiert[0])) )
|
9 | {
|
10 | test[2] =100; //Wird seltsamerweiße ausgeführt
|
11 | }
|
12 |
|
13 | if(test[0] != test[1] )
|
14 | {
|
15 | test[3] =100; //Wird richtigerweiße nicht ausgeführt
|
16 | }
|
Alle Werte haben den Datentyp char.
Die 2 ifs sind eigentlich identisch. Der einzige Unterschied ist dass
das eine den Vergleich direkt macht und das zweite if über eine
zwischengespeicherte Variable.
Allerdings wird das erste If seltsamerweiße ausgeführt, obwohl beide
Vergleiche gleich sein sollte.
test[2] ist am Ende 100
und
test[3] ist 0