what is the different between if-else and switch statment
(other than syntax)

Answer Posted / mikew

The switch branches on one value only, whereas the if-else
tests multiple logical expressions.

So you could say that the switch is a subset of if-else.

The potential difference if that switch is conceptually an
N-way branch point, whereas the if-else is always a
(repeated) binary branch.

However, if you are checking, say, a return code, against a
varied list of possibilities, then the switch can give
greater clarity to source code - and allow simpler addition
of new cases, making it easier for maintenance, as well as
allowing the compiler to generate simpler code.

Simpler code is possible because it can generate a jump
table to perform the multiple comparisons, i.e. in pseudo-code:

_jump_table:
DEFW case1_address
DEFW case1_value
...
DEFW caseN_address
DEFW caseN_value
DEFW NULL /* terminator */

- search _jump_table for case_value
- branch to corresponding case_address, or take default
action if NULL terminator found instead.

In the special case that case1 ... caseN values are
sequential numbers (maybe with a few gaps) then the table
and code can be further simplified as a simple indexed branch:

_jump_table:
DEFW case1_address
...
DEFW default_address /* fill in any holes !*/
...
DEFW caseN_address

- check value is between case1_value and caseN_value
- subtract case1_value
- load branch address word from _jump_table word-indexed on
previous result

Is This Answer Correct ?    27 Yes 14 No



Post New Answer       View All Answers


Please Help Members By Posting Answers For Below Questions

What are the different types of endless loops?

855


What is the role of this pointer?

782


What does c value mean?

879


What is "Duff's Device"?

926


What are 3 types of structures?

848


What does %2f mean in c?

993


Using which language Test cases are added in .ptu file of RTRT unit testing???

4011


a way in which a pointer stores the address of a pointer which stores the value of the target value a) reference b) allocation c) multiple indirection d) none

894


a function gets called when the function name is followed by a a) semicolon (;) b) period(.) c) ! d) none of the above

1155


Hai what is the different types of versions and their differences

1743


How can I find out how much free space is available on disk?

851


Tell me can the size of an array be declared at runtime?

820


Between macros and functions,which is better to use and why?

1829


What is the difference between malloc() and calloc() function in c language?

842


is it possible to create your own header files?

856