Ich lese grade über "statische" Codeanalyse und da tauchte folgender Text auf:

Problematiken in "C"
Das wären unter anderem die undefinierte Auswertungsreihenfolge bei arithmetischen Ausdrücken,
compilerabhängige Ergebnisse beim Rechts-Shift von negativen ganzen Zahlen und die undefinierte Bitbreite des Datentyps int.
Nun bin ich doch etwas verunsichert:
Ich benutze ja sehr gerne mal das Shiften in alle Richtungen, zumindest links und rechts...

Das stellt ja ein "erhebliches" Risiko dar, wenn nicht eindeutig festgelegt ist, was der Compiler daraus macht.
Ist natürlich auch etwas problematisch mit dem shiften und abhängig vom Datentyp, wer mal Assembler programmiert hat
weis um die Problematik des Vorzeichenbits. Hier gibt es teilweise unterschiedliche Befehle zum Schieben,
die das Vorzeichen beachten, auffüllen, rotieren usw.

Kann man sich bei "C" darauf verlassen, dass ein Schieben mit "unsigned" immer richtig funktioniert ?
Einen signed, egal welchen Typs, würde ich eh nicht shiften wollen, da das Ergbenis ungewiss...

Durch die "Integer promotion" wird ja generell erstmal alles zum int gecastet und der hat ein Vorzeichen,
Aber selbst diese Aussage stimmt in "C" ja nicht weil:
Bei Bitdefinitionen ist es wiederum compiler spezifisch festgelegt bzw. einstellbar ob es ein signed oder unsigned ist.
Der C-Compiler von IAR Embedded Workbench z.B. interpretiert einen "int" bei Bitdefinitionen vorzeichenlos,
also wie ein "unsigned int" Möchte man eine Bitkombination mit Vorzeichen haben, muss man explizit einen "signed int" benutzen,
was ursprünglich ja der default int wäre(war, ist ?) oder wie auch immer...
Somit gehört in meinen Augen ein "int" als VERBOTEN, da dieser Typ nicht festgelegt ist.
Das habe ich auch schon seit Jahren in meiner Doku entsprechend spezifiziert und benutze ihn auch nicht.
Ein int könnte demnach Alles sein was mindestens 16 Bit hat. Mehr sagt es anscheinend nicht aus.

Na wie dem auch sei, je mehr ich mich mit der C Programmierung beschäftige, umso mehr erkenne ich wie schwierig es ist,
Fehler zu vermeiden. Eine "sinnvolle" statische Codeanalyse erscheint mir auch nicht wirklich sinnvoll, denn
ich müste dem Tool ja erstmal die ganzen "Eigenheiten" meines verwendeten Compilers verraten.

Ich glaube ich kann eure Gedanken lesen
Der Siro meckert nur immer....
Das ist aber nicht so, das sieht nur so aus...
ich beschäftige mich doch recht intensiv mit der Programmierung den Sprachen und deren Eigenheiten
um halt bessere Software zu schreiben, also versteht es bitte nicht falsch.
Ich schöpfe ja auch immer wieder viele neu Informationen von euch und das ist gut so.

Siro