我尝试了以下但是没有得到0或1.问题是如何在不使用C ++中的条件语句的情况下使该程序打印出布尔值0或1。
char input;
char output;
cout << "Input A Character: \n";
cin >> input;
input = islower(input);
cout << input;
答案 0 :(得分:5)
要获得0
或1
,您可以使用双!
操作:
cout << !!input;
!!
是规范化布尔值的常用习惯用法。当值为0
时,它会产生0
,而当值为非1
时,会产生0
。
有些人不喜欢双重否定,你可以使用!=
相等运算符获得相同的结果:
cout << (input != 0);
答案 1 :(得分:1)
使用int
代替char
:
int result = islower(input);
cout << result;
请注意,islower仅保证返回“0”或“不为0的内容”。您可以通过编写cout << (result ? 1 : 0)
来解决此问题,但我不确定您的要求是否禁止这样做。
答案 2 :(得分:1)
islower
应返回0。
请记住,只有0是false
。即使函数返回-1,它仍然是true
值。
查看参考here。
编辑:
您可以尝试使用input = 1 && islower(input);
。这将强制您true
值变为1。
答案 3 :(得分:1)
0和1都是不可打印的字符,这就是你看不到输出的原因。如果将输出重定向到文件并使用十六进制编辑器打开,您将看到结果。
将结果存储在布尔值中,或者转换结果:cout << (bool) input;
答案 4 :(得分:0)
除0 == true之外的每个值。 0 == false。
答案 5 :(得分:0)
您可以将islower(input)
的输出存储在整数变量中,例如value
和cout << value
int value = islower(input);
cout << input;
答案 6 :(得分:0)
#include <iostream>
using namespace std;
int
main()
{
char input;
cout << "Input A Character: \n";
cin >> input;
unsigned int bIsLower = islower(input);
cout << "input: " << input << ", bIsLower: " << bIsLower << endl;
return 0;
}
输入字符:
一个
输入:a,bIsLower:2输入字符:
一个
输入:A,bIsLower:0输入字符:
ž
输入:z,bIsLower:2
答案 7 :(得分:0)
要打印布尔值,请使用 bool 类型的变量。
char input;
bool output;
// ^^^^
cout << "Input A Character: \n";
cin >> input;
output = islower(input);
// ^^^^^^ Store result in a bool variable (otherwise why have output)
cout << output;
// ^^^^^^^ Now print it.