为什么无论输入什么字符,都会加到letter上!?

#include <stdio.h>void main(){	char c;	int letter=0,space=0,number=0,other=0;	while ((c=getchar())!='\n')
	{		if (65<=c<=90||97<=c<=122)//为什么无论输入什么字符,都会加到letter上!?
			letter++;		else if(c=' ')
			space++;		else if(48<=c<=57)
			number++;		else 
			other++;
	}	printf("%d\n%d\n%d\n%d\n",letter,space,number,other);
}
慕勒3428872
浏览 137回答 2
2回答

明月笑刀无情

(65<=c<=90||97<=c<=122)这种写法,按照C语言的语法规则第一步判断 65<= c 这个不论c为什么字符,都会返回true或者false,这两个值在C中为1或0第二步判断 0 <= 90 或1 <= 90 ,返回 true第三步执行 if 条件里的语句 (这里注意 || 操作,只要前面的返回true了,后面的是不会在执行)接着继续....

DIEA

你的代码还有问题啊else&nbsp;if(c='&nbsp;') &nbsp;&nbsp;&nbsp;&nbsp;space++;else&nbsp;if(48<=c<=57) &nbsp;&nbsp;&nbsp;&nbsp;number++;这里,判断相等应该是==,=只会赋值并且返回值,而if判断非零值永远是true。 还有就是那个连等问题了。以及代码风格也有些问题。 改正后应该如此else&nbsp;if(c=='&nbsp;')&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;space++; }else&nbsp;if(48<=c&&c<=57)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;number++; }
打开App,查看更多内容
随时随地看视频慕课网APP