I assume that "ch"'s type is "signed char", which has a minimum guaranteed range of -127 - +127. "ch++" will yield a value of 127. "ch + 1" will yield a value of 128, though its type will be int. The value of "ch++, ch" is undefined.
edit:
@Wertle Woo: Both you and peteams are wrong. It's strange how some people have difficulty accepting that certain aspects of C are undefined. C was designed to be a portable language. Let's go through the assumptions that peteams has made.
1) He's assuming "signed char" has a range of -128 - +127. It may also be -127 - +127 or anything larger.
2) Pretend we accept his assumption that "signed char" has the range listed above. His next assumption is that "signed char"'s internal representation uses two's complement.
Both of these assumptions may be false on any given standard C implementation. People need to stop assuming that the output you get with your compiler will be the same from implementation to implementation. Signed integer overflows have undefined behaviour. Read the C11 standard and you might learn something.
edit: I should point out that both of those assumptions I've listed fairly safe to make for practical purposes; most modern implementations use 8-bit chars with two's complement for the signed representation. The point is that C doesn't support either of those assumptions and since it's a C question it's an invalid answer. It has undefined behaviour, so leave it at that.
Keep in mind that it's possible to store -127 - +128 in a signed 8-bit char, so a) is also a possible answer as far as C is concerned. The fact is, it's a stupid question. Write "f) Undefined" on your homework and circle it.
edit: But then again, keep in mind that it asks for the value of "ch++" which is obviously +127. This question is stupid on multiple levels. In summary:
signed char ch = 127;
Value of "ch++" = 127.
Value of "ch++, ch" or "++ch" = Undefined.
So depending on how your question is actually worded, one of the above two answers.
edit: Consider the following question.
What colour are oranges?
a) Green.
b) Blue.
c) Purple.
The answers provided are all wrong. Figure out what the right answer is and explain why it's right. It's better to correct a wrong answer before more people start believing it's a right one, than it is to allow it to continue being wrong. By choosing the latter, you'll only make it harder for people who will try to correct this mistake in the future.
@Jonathan:
> Note also that ch++ is the same as ch+=1
Not quite.
t = ch++;
t = ch += 1;
Different values will be stored in t in each scenario. "ch++" yields ch, then stores ch + 1 in ch as a side effect. "ch += 1" yields ch + 1 and stores that value in ch. Since the question specifically asks for the value of "ch++" (rather than the value of ch after "ch++"), it ought to be +127.