R
Reinhardt Behm
Guest
Sieghard Schicktanz wrote:
Im ganzen Thread ging es bisher um die Bedeutung von Variablen und
AusdrĂźcken im Kontext eines C-Programms.
Was irgendwo wie im Speicher steht, geht nur das Programm was an.
Wenn auf externe Medien gespeichert wird, muss man sich sowieso viel mehr
Gedanken machen, Endianess ist nur ein Thema.
Beim Zugriff auf z.B. I/O-Devices ist man dann ganz abhängig von der
speziellen Architektur. Da schweigt sich der C-Standard mit Recht aus.
Wenn Du bei mir programmieren wĂźrdest und boolsche mit arithmetischen Werten
vergleichst, wßrden wir ein ernsthaftes Gespräch fßhren.
Sauberes Programmieren bedeutet, nicht einfach Typen zu vermanschen. Selbst
wenn, wei im Fall des Vergleichs eines boolschen mit einem int Ausdruck, die
Sprache klar definertes Verhalten garantiert.
Aber nicht bei allen.
--
Reinhardt
Hallo Reinhardt,
Du schriebst am Mon, 16 Mar 2015 13:01:52 +0800:
Eine Variable hat immer einen Typ und der bestimmt, wie ihr Bitmuster zu
interpretieren ist.
Ja, aber der Typ bestimmt nur, wie ihr Inhalt im Kontext ihre Verwendung
zu interpretieren ist. Sobald die Variable an die "AuĂenwelt" kommt (das
kann schon durch Speichern der Fall sein), ist nur noch das Bitmuster
sichtbar.
Im ganzen Thread ging es bisher um die Bedeutung von Variablen und
AusdrĂźcken im Kontext eines C-Programms.
Was irgendwo wie im Speicher steht, geht nur das Programm was an.
Wenn auf externe Medien gespeichert wird, muss man sich sowieso viel mehr
Gedanken machen, Endianess ist nur ein Thema.
Beim Zugriff auf z.B. I/O-Devices ist man dann ganz abhängig von der
speziellen Architektur. Da schweigt sich der C-Standard mit Recht aus.
Wie soll sie denn bitte gleichzeitig zwei Werte besitzen?
Sie hat jeden Wert, der ihrem Bitmuster zugeschrieben werden kann.
Zudem werden nie nicht Variable sondern AusdrĂźcke mit == verglichen. Wenn
^^^^^^^^^...
die AusdrĂźcke einen logischen Wert hat (also nur 0 oder 1, z.B. als
^^^^^^^^^^^^^ ^^^?
Ok, Du wirst demnächst als Lektor eingestellt.
Ergebnis eines Vergleichs mit 0 wie oben), dann werden diese Werte
verglichen. Wenn Du da stattdessen int-Variable nimmst, dann werden deren
arithmetische Werte verglichen. Wo ist da jetzt das Problem?
Z.B. daĂ Du - in C - auch zwei AusdrĂźcke vergleichen kannst, die
_unterschiedliche_ Typen besitzen, z.B. einer einen arithmetischen und
der andere einen booleschen.
Wenn Du bei mir programmieren wĂźrdest und boolsche mit arithmetischen Werten
vergleichst, wßrden wir ein ernsthaftes Gespräch fßhren.
Sauberes Programmieren bedeutet, nicht einfach Typen zu vermanschen. Selbst
wenn, wei im Fall des Vergleichs eines boolschen mit einem int Ausdruck, die
Sprache klar definertes Verhalten garantiert.
Mir scheint, die Typverwirrng ist eher in Deinem Kopf als in der Sprache
C. ^u
MĂśglich, C verursacht eben Verwirrung.
Aber nicht bei allen.
--
Reinhardt