static int a[(long)]; とかくことで配列aの添字式はlong として 計算されてポインタ値aに加算されるとしたらよい。
static int b[(unsigned long)];は添字式が値が符号なしロングとして static int c[(signed short)];は添え字式が値が符号付のSHORTとして、 static int d[(unsigned char)];は添え字式の値が符号なしCHARとして、 static int e[(long long)];は添え字式の値がlong longとして計算される。 という意味にすればよい。 配列のサイズも含めて宣言する場合でも同様に、 static int g[(long long)1234567890123]; などと書けるようにするとよい。