Ist dies ein Clone von Atmel-Studio ?IAR Embedded Workbench
Beim Integer würde ich mich mal bei Pascal verlassen, auch wen es jetzt bei FPC immer 32Bit ist."int" ist ohnehin nicht "eindeutig", sondern Architektur- und damit Compiler-Abhängig.
Ist dies ein Clone von Atmel-Studio ?IAR Embedded Workbench
Beim Integer würde ich mich mal bei Pascal verlassen, auch wen es jetzt bei FPC immer 32Bit ist."int" ist ohnehin nicht "eindeutig", sondern Architektur- und damit Compiler-Abhängig.
Integer ist kein Datentyp sonder nur ein Alias - entweder für ShortInt im Default-Modus oder für Longint im ObjFPC-/Delphi-Modus.Mathias hat geschrieben:Beim Integer würde ich mich mal bei Pascal verlassen, auch wen es jetzt bei FPC immer 32Bit ist.
Wieso beschweren die sich ?Elektronik Praxis hat geschrieben: char c1;
c1 = ~0x80;
if (c1 == ~0x80)
{ //wird nie erreicht}
Hilft Dir hier nicht, das Problem ist ein Anderes. Der Char c1 wird vom Compiler auf 32bit erweitert.mschnell hat geschrieben:Wenn man mit 8 Bit großen Zahlen rechen will, sollte man (wie jeder C-Programmierer weis) "signed char" oder "unsigned char" verwenden, oder besser "uint8_t" oder "int8_t".Elektronik Praxis hat geschrieben: char c1;
c1 = ~0x80;
if (c1 == ~0x80)
{ //wird nie erreicht}
Ich vermute, Du meinst:Timm Thaler hat geschrieben:Der Char c1 wird vom Compiler auf 32bit erweitert
Code: Alles auswählen
void loop() {
char c1;
c1 = ~0x80;
if (c1 == ~0x80) {
Serial.println("true");
} else {
Serial.println("false");
}
Serial.println(sizeof(c1));
}
Code: Alles auswählen
c1 = ~80;
if (c1 == ~80) {
Nee, nicht komisch.Mathias hat geschrieben:Komisch mache ich aberdann kommt "true".Code: Alles auswählen
c1 = ~80; if (c1 == ~80) {
Code: Alles auswählen
char c1;
c1 = ~0x80;
if (c1 == char(~0x80)) { // oder if (c1 == 127) {
Serial.println("true");
} else {
Serial.println("false");
}
Nee.Mathias hat geschrieben:Jetzt blicke ich langsam durch, der dumme C-Compiler macht aus einem gewöhnlichen char ein Signed.
Und in der If-Abfrage, macht er ein Unsigned.
In C ist jede Integer Konstante ohne Zusatz-Angabe "int".Mathias hat geschrieben:Im Arduino-Forum habe ich eine Antwort bekommen, die Konstante 0x80 implementiert C++ als Integer.