Ausdruck, Zeichen, Byte, Null: 0 != '\0' ?

Gast
Kann sein, dass ich mich irre, aber beim gcc bewirkt const allein nicht, 
dass die Daten im Flash landen. Daher liest du mit pgm_read_byte 
wahrscheinlich aus dem Nirvana. Der Datenmüll landet dann (wegen 
einfachem '=') in string[0] und ist mit einer Wahrscheinlichkeit von 
255/256 nicht null.
Gast
Wieso sollte
1
const char array[] = ...
 im Flash stehen ?
Wieso sollte Lesen im Flash mit der Adresse einer SRAM Variable ein 
nicht-zufälliges Ergebnis liefern?
Gast
Verzeihung. Bitte nochmal:
1
char string[8] = "";
2
const char array[] PROGMEM= 
3
a) {0}
4
b) {'\0'}
5
;
6
if( string[0] = pgm_read_byte(&array[0]) )
7
  // true
8
else
9
  // false
Gast
Die Aussage ist korrekt, aber nicht der Grund.

Der Ausdruck string[0] = pgm_read_byte(&array[0]) hat den Wert 
pgm_read_byte(&array[0]) und sollte somit für die Bedingung wahr sein, 
wenn der Rückgabewert != 0 ist.
Nun ist ja eigentlich 0 == 0 == '\0'. Oder?

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 16 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.