Tag: The code implementation has one fill highlight than the multi-label round
Sometimes the programming for a long time, if you stop to think about it, even some of the most basic knowledge points, it may also make their own circle. In fact, at the end of the laying of the foundation of the time did not fight, or self-righteous think that they understand, and then when laying the groundwork of the lazy to think too lazy to see, the result is that the basic knowledge of the point of view has been stuck in their own inherent understanding.
OK, let's get down to the chase. The IF, else if, and else are the basic syntactic constructs that we often use. One day, in the garden to see a blog posted such a problem.
Console input a score, if the score >=90: Output A, if 90> score >=80 output B, if 80> results >=70 output C, if 70> results >=60 output D, if the results <60 output E. think about using if or if-else good or if else if yes, why good?
The IF code is implemented as follows:
if (score >= 90)
{
Console.WriteLine("A");
}
if (score >= 80)
{
Console.WriteLine("B");
}
if (score >= 70)
{
Console.WriteLine("C");
}
if (score >= 60)
{
Console.WriteLine("D");
}
if (score < 60)
{
Console.WriteLine("E");
}
The If...else code is implemented as follows:
if (score >= 90)
{
Console.WriteLine("A");
}
else//<90
{
if (score >= 80)
{
Console.WriteLine("B");
}
else//<80
{
if (score >= 70)
{
Console.WriteLine("C");
}
else//<70
{
if (score >= 60)
{
Console.WriteLine("D");
}
else
{
Console.WriteLine("E");
}
}
}
}
The code for If...else if is implemented as follows:
if (score >= 90)
{
Console.WriteLine("A");
}
else if (score >= 80)
{
Console.WriteLine("B");
}
else if (score >= 70)
{
Console.WriteLine("C");
}
else if (score >= 60)
{
Console.WriteLine("D");
}
In the company to do development, I believe there are a lot of people disorderly use these several structures.
We first look at the if implementation, it is obvious that the IF statements are independent, regardless of whether the previous if statement is not true, the current if statement will be executed, obviously, this implementation is inefficient.
Second and third implementations, in essence, the two implementations are equivalent, in most programming language implementations, the else if is not as a basic keyword appears, it is actually an else statement and if statement of the combination, which avoids the use of only if, else when multiple nesting, Like the second implementation above, like the syntax sugar, it's easy for programmers to knock code.
In addition, this scenario can also be implemented using the SWITCH...CASE structure. In C #, when you use the switch structure on an integer constant, the CLR always translates switch into a lookup table structure, so that each case branch gets the same execution time, in this situation, compared to using the If ... Else structure has a value at the same time or a small number of values appear significantly higher, then the use of the IF...ELSE structure and the higher the frequency of the first execution speed than the switch structure will be faster.
Finally, the switch...case structure in C # also allows the use of string constants, which are slightly different from integer constants. It will be compiled into a structure similar to the IF statement in cases where the case label is less (approximately 6 or so). However, if the case label is large enough (greater than 6), the C # compiler creates a Hashtable object, populates it with string constants, and then finds it on the table and jumps. Hashtable lookup is not strictly O (1) and has a significant constant cost, but if the number of case labels is large enough, it will be faster than comparing string constants in multiple if statements.
If, else if, else, and switch...case use Small (C #)