有3个整型变量可以有0或1的值。如果全部为0或全部为1,则打印特定语句。对于所有其他值组合,打印另一个语句。
我尝试了以下有效的方法。有没有更好的方法来编写if语句?
#include <iostream>
using namespace std;
int main()
{
int a, b, c;
cin >> a >> b >> c;
if(!(a != 0 && b != 0 && c != 0) && !(a == 0 && b == 0 && c == 0))
{
cout << "a, b or c have mixed values of 1 and 0" << endl;
}
else
{
cout << "All of a, b and c are either 1 or 0" << endl;
}
system("pause");
return 0;
}
很抱歉引起了一些混乱。实际上,在上面的代码中并没有对a,B & c的值进行检查,因为我给出了一个简单的例子。if语句不是检查a,b & c是否都相等。它是检查它们是否都是0或1整数值(不是布尔值)。
7条答案
按热度按时间6l7fqoea1#
在您的代码中,对用户输入的值没有限制。
如果您只想查看是否所有值都彼此相等,您可以执行以下操作:
ntjbwcob2#
von4xj4u3#
qacovj5a4#
另一种效率较低的方法:
gblwokeq5#
更通用的解决方案:基于
a XNOR b
确保这两个值都是0或1的思想。zfycwa2u6#
假设你使用的是C++11,你可以通过变量模板实现你想要的,例如:
你可以在代码中这样调用它:
agxfikkp7#
这里是一个更通用的C++17用户解决方案。这将允许你比较任何类型的任意数量的值。