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
Do you know what are the properties of union in c?
What is a const pointer in c?
Can a pointer point to null?
What is a dynamic array in c?
Can we initialize extern variable in c?
How many identifiers are there in c?
how to print electricity bill according to following charges first 100 units -1rs per unit for next 200 units-1.50 rs per unit without using conditions
How many types of operators are there in c?
Explain 'far' and 'near' pointers in c.
What is FIFO?
What are the similarities between c and c++?
What does %d do in c?
What is the difference between #include and #include 'file' ?
#include main() { char s[] = "Bouquets and Brickbats"; printf(" %c, ",*(&s[2])); printf("%s, ",s+5); printf(" %s",s); printf(" %c",*(s+2)); }
Explain the difference between null pointer and void pointer.