Heute fand ich folgendes:Multipliziert char und int zusammen in C
#include <stdio.h>
int main(){
char x = 255;
int z = ((int)x)*2;
printf("%d\n", z); //prints -2
return 0;
}
Also im Grunde ein Überlauf Ich erhalte, weil die Größenbegrenzung durch die Operanden auf der rechten Seite von dem = -Zeichen bestimmt wird ??
Warum wirft es nicht vor der Multiplikation auf int?
In diesem Fall verwende ich ein char und int, aber wenn ich "long" und "long long int" (c99) verwende, dann bekomme ich ähnliches Verhalten. Wird generell davon abgeraten, mit Operanden unterschiedlicher Größe arithmetisch zu arbeiten?
# enthalten für diese Typen. –
slartibartfast