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
Is it valid to address one element beyond the end of an array?
What are 3 types of structures?
A c program to display count values from 0 to 100 and flash each digit for a secong.reset the counter after it reaches 100.use for loop,. pls guys hepl me.. :(
What is the difference between text and binary modes?
Is c dynamically typed?
What is c language and why we use it?
write a c program for swapping two strings using pointer
How will you write a code for accessing the length of an array without assigning it to another variable?
What is a spanning Tree?
If fflush wont work, what can I use to flush input?
What is meant by high-order and low-order bytes?
Is there any demerits of using pointer?
Which is the best website to learn c programming?
can we change the default calling convention in c if yes than how.........?
Explain about C function prototype?