Aus RN-Wissen.de
Wechseln zu: Navigation, Suche
LiFePO4 Speicher Test

("TRUE ist nicht 1")
(Weitere Fallstricke:)
 
(2 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 8: Zeile 8:
  
 
: Es gibt mehr als einen C-Standard. Manchmal ist es günstiger, TRUE als -1 zu definieren. Die Makros oben sind jedoch unabhängig davon, welcher Wert ein Compiler implementiert --[[Benutzer:SprinterSB|SprinterSB]] 23:36, 5. Jun 2007 (CEST)
 
: Es gibt mehr als einen C-Standard. Manchmal ist es günstiger, TRUE als -1 zu definieren. Die Makros oben sind jedoch unabhängig davon, welcher Wert ein Compiler implementiert --[[Benutzer:SprinterSB|SprinterSB]] 23:36, 5. Jun 2007 (CEST)
 +
::Nur aus Interesse: Welcher Compiler unterstüzt nicht C89, wo dies auch schon galt?  Außerdem schließe ich mich der Meinung von http://www.dclc-faq.de/kap8.htm#8.2 an, dass Vergleiche auf auf ''TRUE'' grundsätzlich ungünstig sind.  Wenn man unbedingt auf eine Konstante abfragen will, was eigentlich auch mit dem "!"-Operator übersichtlicher ist, kann man noch ''!= FALSE'' verwenden.--[[Benutzer:Plaicy|Plaicy]] 17:08, 12. Jun 2007 (CEST)
 +
 +
== Weitere Fallstricke: ==
 +
 +
Die implizite Typenumwandlung kann zu unerwarteten Ergebnissen führen:
 +
z.B. liefert    abs(1.4) nicht etwa 1.4 sondern 1 als Ergebnis, denn die Funktion abs() ist in C für Integertypen definiert. Für Floatingpoint gibt es die Funktion fabs().
 +
 +
In C wird zur Laufzeit nicht auf Überläufe getestet, weder bei Arrayzugriffen noch bei Rechenoperationen.

Aktuelle Version vom 2. November 2007, 23:18 Uhr

"TRUE ist nicht 1"

In dem Abschnitt steht, dass man lieber folgendes schreiben soll.

#define FALSE (0!=0)
#define TRUE  (0==0)

Was soll das bringen? Danach ist FALSE 0 und und TRUE als 1 definiert, da laut ANSI-C (ANSI99 6.5.9) Each of the operators ["==" und "!="] yields 1 if the specified relation is true and 0 if it is false.'. Siehe auch http://www.dclc-faq.de/kap8.htm#8.2 . Meine Meinung verwirrt die Aussage TRUE ist nicht 1 nur.--Plaicy 22:43, 3. Jun 2007 (CEST)

Es gibt mehr als einen C-Standard. Manchmal ist es günstiger, TRUE als -1 zu definieren. Die Makros oben sind jedoch unabhängig davon, welcher Wert ein Compiler implementiert --SprinterSB 23:36, 5. Jun 2007 (CEST)
Nur aus Interesse: Welcher Compiler unterstüzt nicht C89, wo dies auch schon galt? Außerdem schließe ich mich der Meinung von http://www.dclc-faq.de/kap8.htm#8.2 an, dass Vergleiche auf auf TRUE grundsätzlich ungünstig sind. Wenn man unbedingt auf eine Konstante abfragen will, was eigentlich auch mit dem "!"-Operator übersichtlicher ist, kann man noch != FALSE verwenden.--Plaicy 17:08, 12. Jun 2007 (CEST)

Weitere Fallstricke:

Die implizite Typenumwandlung kann zu unerwarteten Ergebnissen führen: z.B. liefert abs(1.4) nicht etwa 1.4 sondern 1 als Ergebnis, denn die Funktion abs() ist in C für Integertypen definiert. Für Floatingpoint gibt es die Funktion fabs().

In C wird zur Laufzeit nicht auf Überläufe getestet, weder bei Arrayzugriffen noch bei Rechenoperationen.


LiFePO4 Speicher Test