if/else if 在使用时的细节区别
解析:当在一次循环中进行多个条件判断的时候使用else if会避免出错,用多个if可能会出错。
举例如下:
题目:输入一行字符,统计其中的英文字符,数字字符,空格和其他字符的个数。
#include<stdio.h>
#define N 80
int main()
{
char s[N];
int i=0,a=0, b = 0, c = 0, d = 0;
printf("input a series of numbers:\n");
gets(s);
while (s[i] != '\0')
{
if (s[i] >= 'A'&&s[i] <= 'Z' || s[i] >= 'a'&&s[i] <= 'z')
a++;
else if (s[i] >= '0'&&s[i] <= '9' )
b++;
//if (s[i] = ' ')
else if (s[i] ==32)
c++;
else
d++;
i++;
}
printf("英文字符:%d个\t数字:%d个\t空格:%d个\t其他字符%d个\t",a,b,c,d);
system("pause");
}
如果使用多个if进行并列判断,则运行出错。
#include<stdio.h>
#define N 80
int main()
{
char s[N];
int i=0,a=0, b = 0, c = 0, d = 0;
printf("input a series of numbers:\n");
gets(s);
while (s[i] != '\0')
{
if (s[i] >= 'A'&&s[i] <= 'Z' || s[i] >= 'a'&&s[i] <= 'z')
a++;
if (s[i] >= '0'&&s[i] <= '9' )
b++;
if (s[i] ==32)
c++;
else
d++;
i++;
}
printf("英文字符:%d个\t数字:%d个\t空格:%d个\t其他字符%d个\t",a,b,c,d);
system("pause");
}
注意到其他字符图一记录为1个,图二记录为6个。
原因是:
if与多个else if是分枝情况,只要出现首次if或者else if条件满足,则执行该条代码,即使后续存在其他满足else if的条件也不会执行else if及else的内容;if与多个if是并列情况,会顺序执行,当执行完满足条件的if语句后,最后的else也会执行;综上,由于多个if并列,所以每次都会执行else,所以其他字符统计个数个数为6个。因此,建议在编程时,当出现多个条件判断的时候,严格使用if与else if的形式才会避免犯错。