今日、私は次のことを見つけました。
#include <stdio.h>
int main(){
char x = 255;
int z = ((int)x)*2;
printf("%d\n", z); //prints -2
return 0;
}
したがって、サイズ制限は = 記号の右側のオペランドによって決定されるため、基本的にオーバーフローが発生します??
作業を乗算する前に int にキャストしないのはなぜですか?
この場合、char と int を使用していますが、"long" と "long long int" (c99) を使用すると、同様の動作が得られます。一般に、異なるサイズのオペランドで算術を行うことはお勧めできませんか?