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

软件和网站开发以及相关技术探讨
回复
drongh
帖子: 1038
注册时间: 2007-01-10 9:32

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

#1

帖子 drongh » 2014-12-04 15:32

代码: 全选

#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,是真,结果没有执行选择语句。实在搞不懂。
walker.ma
帖子: 26
注册时间: 2014-11-05 7:10
系统: LinuxMint 17

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

#2

帖子 walker.ma » 2014-12-04 16:02

编译器的问题?我这里没有问题
Screenshot-Terminal.png
Linux Mint 17 Mate Edition
人啊,总得活出点信仰来
头像
TeliuTe
论坛版主
帖子: 7668
注册时间: 2007-11-25 13:29
系统: 16/18/20/w7
来自: 新疆博乐
联系:

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

#3

帖子 TeliuTe » 2014-12-04 16:34

==是绝对等于,islower出的逻辑值跟1可能不同,有断言的直接用就是了
头像
astolia
论坛版主
帖子: 6445
注册时间: 2008-09-18 13:11

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

#4

帖子 astolia » 2014-12-05 10:51

谁跟你说小写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.
drongh
帖子: 1038
注册时间: 2007-01-10 9:32

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

#5

帖子 drongh » 2014-12-05 12:11

谢了。
返回值居然是512.。。。
回复