所以我编写了一个基本程序,用于检查字符串中的小写元音并显示它找到的元数。
我最初使用它:
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)
做同样的事情吗?
答案 0 :(得分:4)
islower
是小写字母,则 true
返回不等于零的整数值(即ch
)。否则为零(即false
)。
比较islower(ch) == true
如果islower
返回1
,则有效,如上所述,情况并非如此。
因此,正确的islower(ch) == true
并没有像您预期的那样发挥作用。
答案 1 :(得分:4)
引自cplusplus.com关于islower()
的返回值:
如果确实c是小写字母,则值不为零(即,为真)。否则为零(即假)。
所以,只需if (islower(ch))
代替if (islower(ch) == true)