布尔值始终评估为真
Boolean always evaluating as true
我正在制作一个简单的程序,但有一个问题,布尔值总是评估为真,我不知道发生了什么,我错过了什么还是什么? 请帮忙
#include <iostream>
#include <iomanip>
#include <string>
using namespace std;
int main ()
{
char kar;
cout<<"Masukan Karakter = ";
cin>>kar;
bool vokal = (kar == ('A','I','U','E','O','a','i','u','e','o'));
string keterangan = vokal ? "Huruf Vokal" : "Bukan Vokal";
cout<<keterangan;
return(0);
}
这个:
('A','I','U','E','O','a','i','u','e','o')
不代表一个集合或你认为它的作用。 这些','
(逗号(之间的所有内容都被视为表达式。代码的这一部分从左到右计算每个表达式,并返回最右边的计算。
在您的情况下:表达式'A'
的计算结果为'A'
,'I'
计算结果为'I'
、...,'e'
计算结果为'e'
,'o'
计算结果为'o'
。计算每个表达式后,将返回值'o'
。这就是为什么您的kar
将始终与'o'
进行比较,并且此代码的行为与您的代码相同:
bool vokal = (kar == 'o');
您实际需要做的是分别比较kar
与这些字符中的每一个(在您的情况下使用 OR ('||'
( 运算符(:
bool vokal = (kar == 'A' || kar == 'I' || kar == 'U' || kar == 'E' || kar == 'O'
|| kar == 'a' || kar == 'i' || kar == 'u' || kar == 'e' || kar =='o');
相关文章:
- 在没有定义返回类型的函数中返回布尔值,并将结果保存在无错误的char编译中-为什么
- 变量定义到C++布尔值转换
- 如何确保在使用基于布尔值的两个方法之一调用方法时避免分支预测错误
- 重载更少,则运算符返回相反的布尔值
- 将此布尔值传递给此函数的最有效方法是什么?
- 如何设置 c++ 类的布尔值?
- 使用 MAKEWORD / MAKEWPARAM 使用布尔值而不是布尔值
- 将 10 个线程与原子布尔值同步
- 创建类似于布尔值的变量类型
- 布尔值向量的基于范围 for 循环
- 零点和布尔值之间的比较
- 简化对两个布尔值的 4 个 if/else 检查
- 无法创建带有布尔值和矢量的地图
- 对于完成布尔值设置为 true 后未停止的循环
- fstream / ifstream / ofstream 对象如何转换为布尔值
- 布尔值始终评估为真
- C++ 动态评估变量类型布尔值
- 将流运算符>>评估为布尔值
- 在C 中使用两个CHAR变量评估布尔值
- 在C++中将字符串评估为布尔值