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
Why does this code crash?
What is the use of sizeof?
Why is main function so important?
What does the && operator do in a program code?
What is a double c?
Write a program to print factorial of given number without using recursion?
How to check whether string is a palindrome, WITHOUT USING STRING FUNCTIONS?
Are the variables argc and argv are always local to main?
Is it possible to initialize a variable at the time it was declared?
What is difference between array and structure in c?
What is the difference between scanf and fscanf?
Can you assign a different address to an array tag?
The difference between printf and fprintf is ?
Why isnt there a numbered, multi-level break statement to break out
What is the benefit of using #define to declare a constant?