在单个IF语句中测试多个布尔值 < P>初学者,C++程序员尝试测试传递给程序的参数/参数。
可以向程序传递多个参数,但是我想测试,如果传递了某些参数,那么其他参数将无效 e、 PGM接受arg(1)arg(2)arg(3)arg(4)arg(5)等 如果提供了arg(1)和arg(2),则arg(3)、arg(4)和arg(5)等。。。如果它们与arg(1)和arg(2)一起提供,则程序应终止并显示错误消息 我认为使用布尔IF测试是检查某些值是否为真/假的好方法 我在stackoverflow上搜索了一下,但没有找到一个完全包含我要做的事情的答案。如果有人能给我指出正确的方向,或者提出一种更有效的方法,我将非常感激 我的代码当前如下所示:在单个IF语句中测试多个布尔值 < P>初学者,C++程序员尝试测试传递给程序的参数/参数。,c++,if-statement,boolean,C++,If Statement,Boolean,可以向程序传递多个参数,但是我想测试,如果传递了某些参数,那么其他参数将无效 e、 PGM接受arg(1)arg(2)arg(3)arg(4)arg(5)等 如果提供了arg(1)和arg(2),则arg(3)、arg(4)和arg(5)等。。。如果它们与arg(1)和arg(2)一起提供,则程序应终止并显示错误消息 我认为使用布尔IF测试是检查某些值是否为真/假的好方法 我在stackoverflow上搜索了一下,但没有找到一个完全包含我要做的事情的答案。如果有人能给我指出正确的方向,或者提出
bool opt1=false;
bool opt2=假;
bool opt3=假;
布尔opt4=假;
布尔opt5=假;
对于(int i=1;i一个可能的解决方案是(如果我充分理解您的问题):
但我认为最好忽略过时的参数,而不是显示错误,同时您仍然可以仅使用opt1
和opt2
运行流程。这可以让我们得到更简单的代码:
if(opt1 && opt2)
{
// Do something without using opt3, opt4 and opt5
}
else
{
// Do something taking into account opt3, opt4 and opt5
}
我希望这就是您想要的。一个好的解决方案是使用操作数!
和&&
!
表示“不”(或在这种情况下为“不正确”),而和&
组合了两种不同的逻辑比较(在这种情况下为“逻辑测试1”和“逻辑测试2”)
下面是一个例子:
if((opt1 && opt2)&&(!(opt3||opt4||opt5))){
/*
Do something if opt1 and opt2 are true and others are false
*/
}
这实际上与上面@Fareanor的解决方案(第一个解决方案)相同从按位not切换到逻辑not(!opt3&&!opt4
),但除此之外,我看不出这有什么问题。你在使用这种方法时遇到了问题吗?不要混淆太多的偏执,使用!
而不是~
:如果(opt1&&opt2&!opt3&!opt4&&opt5)
可能错误案例对应于opt1&&opt2&&opt4&&opt5)
这是不一样的,因为你不能处理opt1、opt2和opt3有效的情况,所以你不能在一个if中测试所有东西。@Fareanor我只是将你的第一个if和它的子if与~~~~&&&~~~混合在一起,这实际上是你的代码,我只是做了一些编辑。@SilverousBlack不,你不明白。这不一样,因为你不懂处理(opt1和&opt2)
为假,因此opt3
,opt4
和op5
变为有效的情况。这是因为您不能将所有内容都放在&
编写if(a和B){
的单个链中
只有在没有else
语句的情况下。啊,我明白你的意思了@Fareanor。我的意思是我只合成了if(opt1和&opt2)
及其子路径if(!(opt3 | opt4 | opt5)
谢谢你的帮助。
if((opt1 && opt2)&&(!(opt3||opt4||opt5))){
/*
Do something if opt1 and opt2 are true and others are false
*/
}