I tried to shift through the piles of consciousness of those making a case for how the Pascal vs the C selective statements work and got lost so excuse me if this was already stated.
In "C", if things haven't change since the last time, I constructed Switch statements the CASE that matches gets executed as like in PASCAL but, in PASCAL the "BREAK" is automatically assumed somewhere in the statement unless a GOTO is executed out of the CASE (pascal), SWITCH (C).
In 'C', without the use of BREAK it simply follows through the next "CASE" selection without actually performing a CASE test in 'C'. So, this means the coder needs to organize the code in such a way that it becomes serialized, like used in decoding or encoding Serial Data streams but it happens to work out flawlessly in most cases.
In Pascal, you can also perform this task however, since the BREAK is naturally inherent in PASCAL the coder must use a GOTO to a place prior to the CASE statement start and also the coder must change the value of the switch being examine due to how the CASE in pascal works. This means while in a current case switch of PASCAL you must change this value prior to using the GOTO to force a retake on the PASCAL case system.
All in all, you can force both to behave like each other, the C version is most likely more code efficient, but it must be fully understood by the coder to take advantage of it, whereas the Pascal version is safer for unexperienced C coders and will likely generate more code in the background to duplicate the follow through as in C. But what are we talking about here, Apples and oranges? I like both.