もっと言えば、32BIT ターゲットで、
char a[0x80000000 | 1];
みたいな場合、中味は signed と
捉えれば「負数」ですが、unisgned と
捉えれば、0x80000001 という大きな値
に過ぎません。
どちらもエラーになる可能性が高いですが。