分页: 1 / 1

c 语言程序,有个疑问,请大家帮忙。。

发表于 : 2014-12-04 15:32
drongh

代码: 全选

#include "stdio.h"
#include "ctype.h"

int main(int argc, char const *argv[])
{
	int ch;
	int upper_count, lower_count;
	upper_count = lower_count = 0;

	while ((ch = getchar()) != EOF) {
		if (islower(ch) == 1) {
			lower_count++;
		} else if (isupper(ch) == 1) {
			upper_count++;
		} else {
			continue;
		}
	}

	printf("lowercase number: %5d, uppercase number: %5d\n", lower_count, upper_count);
	return 0;
}
上面这段程序是统计大写和小写的个数,然后打印。
选择语句里的 islower(ch) == 1 为什么必须写成 islower(ch) 才对。
如果是小写,islower(ch) 返回是 1, 1 == 1,是真,结果没有执行选择语句。实在搞不懂。

Re: c 语言程序,有个疑问,请大家帮忙。。

发表于 : 2014-12-04 16:02
walker.ma
编译器的问题?我这里没有问题
Screenshot-Terminal.png

Re: c 语言程序,有个疑问,请大家帮忙。。

发表于 : 2014-12-04 16:34
TeliuTe
==是绝对等于,islower出的逻辑值跟1可能不同,有断言的直接用就是了

Re: c 语言程序,有个疑问,请大家帮忙。。

发表于 : 2014-12-05 10:51
astolia
谁跟你说小写islower(ch)返回是1了?多查查文档
http://www.cplusplus.com/reference/cctype/islower/
Return Value
A value different from zero (i.e., true) if indeed c is a lowercase alphabetic letter. Zero (i.e., false) otherwise.

Re: c 语言程序,有个疑问,请大家帮忙。。

发表于 : 2014-12-05 12:11
drongh
谢了。
返回值居然是512.。。。