Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/140.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在单个IF语句中测试多个布尔值 < P>初学者,C++程序员尝试测试传递给程序的参数/参数。_C++_If Statement_Boolean - Fatal编程技术网

在单个IF语句中测试多个布尔值 < P>初学者,C++程序员尝试测试传递给程序的参数/参数。

在单个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上搜索了一下,但没有找到一个完全包含我要做的事情的答案。如果有人能给我指出正确的方向,或者提出

可以向程序传递多个参数,但是我想测试,如果传递了某些参数,那么其他参数将无效

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
   */
}