- Labornetzteil AliExpress         
Ergebnis 1 bis 10 von 12

Thema: gemischter Vergleich mit signed und unsigned

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #11
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    05.11.2007
    Beiträge
    1.076
    Naja, hättest ruhig sagen können, daß es ziemlicher Blödsinn ist, was ich geschrieben habe.
    So hätte ich es mir vielleicht gedacht, aber so funktioniert es nunmal nicht.
    Also ich versuche es noch einmal und werde jede Aussage separat halten, so könnt Ihr mir ein Sternchen vergeben wenn die Aussage richtig ist.
    Ich möchte es ja einfach nur verstehen.

    Der Standard Datentyp in "C" ist "int"

    Wie groß ein "int" ist, hängt vom System ab.

    Es können KEINE, weder logische noch mathematische Operation mit Werten durchgeführt werden, die eine kleinere Rangfolge haben als ein "int".

    Die Rangfolge entspricht dem Speicherbedarf. ??? mach ich mal 3 Fragezeichen, ist das so ???

    Aus einem char (8 Bit, unabhängig davon ob signed oder unsigned) wird vor einer logischen oder mathematischen Funktion ein "int"

    Aus einem short (16 Bit, unabhängig davon ob signed oder unsigned) wird vor einer logischen oder mathematischen Funktion ein "int"
    unter der Vorraussetzung, daß der Datentyp "short" eine geringere Rangfolge hat als der "int".

    Werden 2 "int" Werte in eine logische oder mathematische Operation verwickelt, wovon einer der beiden ein unsigned ist,
    wird der zweite Operand (der eigentlich signed ist) zu einem unsigned.

    Habe den Text übrigens vor deinem letzten Beitrag (von sternst) geschrieben. Hab mich den ganzen Tag mit bescchäftigt, sogar den Assembler Code zerpflückt.
    Danke nochmal.

    Korrektur 30.11.2011
    Stimmt irgendwie alles nicht, wie ich grad feststellen muste. Die Beschreibung lässt doch sehr zu wünschen übrig, wie die Integer Promotion funktioniert oder funktionieren sollte.
    Rechnen tut er "oftmals" richtig, aber vergleichen geht ständig schief. Das Verhalten wird immer merkwürdiger.......
    Hab auch keinen Bock mich weiterhin mit diesem Blödsinn auseinanderzusetzen, zumal mein Controller Vorzeichenrichtig in Hardware vergleichen kann, aber C baut einen derartigen Code herum, daß es nicht mehr funktioniert.
    In Assembler läuft es einwandfrei.

    Die einzige Möglichkeit welche ich gefunden habe, damit der C-Code wieder richtig funktioniert, ist die explizite Typwandlung vor dem Vergleich. Ansonsten ist das Ergebnis "UNDEFINIERT"
    bzw. Compiler (Prozessor) spezifisch, also:

    if (signed(a) > signed (b)) ......




    Siro
    Geändert von Siro (30.11.2011 um 19:48 Uhr)

Ähnliche Themen

  1. unsigned volatile long ??
    Von Ali_Baba im Forum C - Programmierung (GCC u.a.)
    Antworten: 9
    Letzter Beitrag: 04.03.2009, 21:31
  2. Warum uint16_t statt unsigned int?
    Von ricola im Forum C - Programmierung (GCC u.a.)
    Antworten: 6
    Letzter Beitrag: 05.07.2007, 18:38
  3. Signed integer-Werte Vergleichen
    Von *Mario* im Forum PIC Controller
    Antworten: 1
    Letzter Beitrag: 21.06.2006, 12:09
  4. 16Bit unsigned integer auf AVR
    Von cumi im Forum C - Programmierung (GCC u.a.)
    Antworten: 2
    Letzter Beitrag: 13.04.2006, 21:07
  5. Signed or Unsigned
    Von Arexx-Henk im Forum C - Programmierung (GCC u.a.)
    Antworten: 4
    Letzter Beitrag: 13.02.2006, 17:05

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

LiFePO4 Speicher Test