islower()适用于!=运算符但不适用于==运算符

时间:2014-09-17 06:55:01

标签: c++ comparison-operators

所以我编写了一个基本程序,用于检查字符串中的小写元音并显示它找到的元数。

我最初使用它:

for (char ch : str)
    {
        if (islower(ch) == true && isVowel(ch) == true) //isVowel is a function that
            strCount++;                                 //I made
    }

我的程序不会增加计数器但是当我把它更改为:

for (char ch : str)
    {
        if (islower(ch) != false && isVowel(ch) == true)
            strCount++;
    }

它立即开始工作。为什么?不

if (islower(ch) != false)

if (islower(ch) == true)

做同样的事情吗?

2 个答案:

答案 0 :(得分:4)

如果确实islower是小写字母,则

true返回不等于零的整数值(即ch)。否则为零(即false)。

比较islower(ch) == true如果islower返回1,则有效,如上所述,情况并非如此。

因此,正确的islower(ch) == true并没有像您预期的那样发挥作用。

LIVE DEMO

答案 1 :(得分:4)

引自cplusplus.com关于islower()的返回值:

  

如果确实c是小写字母,则值不为零(即,为真)。否则为零(即假)。

所以,只需if (islower(ch))代替if (islower(ch) == true)