In general case it is not correct to say that the pattern is the same, if the range of signed char does not cover 240. If 240 is out of range, the result of this overflowing initialization  is implementation-defined (and may result in a signal, see 6.3.1.3/3). The same applies to char initialization if it is signed.
The language guarantees matching representations only for the common part of the ranges of signed char and unsigned char. E.g. this is guaranteed to produce the same pattern
char c = 10;
unsigned char c = 10;
signed char c = 10;
With 240 there's no such guarantee in general case (assuming it is out of range).