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/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++;
	    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");

}

if/else if 在使用时的细节区别
注意到其他字符图一记录为1个,图二记录为6个。
原因是:
if与多个else if是分枝情况,只要出现首次if或者else if条件满足,则执行该条代码,即使后续存在其他满足else if的条件也不会执行else if及else的内容;if与多个if是并列情况,会顺序执行,当执行完满足条件的if语句后,最后的else也会执行;综上,由于多个if并列,所以每次都会执行else,所以其他字符统计个数个数为6个。因此,建议在编程时,当出现多个条件判断的时候,严格使用if与else if的形式才会避免犯错。