Ich hatte irgendwann mal einen Fall wo das klemmte, das ist aber schon ewig her - ich kann aus dem Effeff nicht mal sagen, welcher Compiler das damals war, vielleicht sogar noch Turbo Pascal
Ich habs mir dann halt angewöhnt, bei bitweisen Verknüpfungen immer gleich große Werte zu verwenden, für mich persönlich machts den Code auch besser lesbar weil ich auf Anhieb sehe wie groß die beteiligten Datentypen sind.
OT: Vor einem halben Jahr etwa hatte ich unter VS2003 (VC++) mal einen entfernt ähnlichen Fall der sehr kurios war. Aufruf einer Funktion in einer
DLL, Parameterliste enthielt mehrere Pointer, sowie als letzten Parameter einen optionalen BOOL (MS-Spezialität, nicht verwechseln mit boolean...). Auf der Aufruferseite wurde der vorletzte Pointer vergessen, der Compiler meckerte aber nicht! Auf dem Stack landete dann ein einzelnes Byte aus dem BOOL (ja, im Assemblercode wurde wirklich das LSB isoliert als DWORD auf den Stack gepackt!) und der auf DWORD-Format aufgeblasene Defaultwert für den der Meinung des Compilers nach fehlenden letzten Bool-Typ. Mein Kollege damals war mit seinem Latein am Ende, warum das immer eine
AV gab, im Assemblercode wars dann aber relativ schnell lokalisiert und klar
Ich muss dazu sagen dass diese Aufrufe wirklich krank aussahen und tonnenweise Antipatterns beinhalteten - Altlasten halt