Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/59.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
C if-else比较器中bool变量共享相同值的问题_C_If Statement_Boolean - Fatal编程技术网

C if-else比较器中bool变量共享相同值的问题

C if-else比较器中bool变量共享相同值的问题,c,if-statement,boolean,C,If Statement,Boolean,我正在尝试制作一个包含6个任务(包括教程)的游戏。有6个布尔变量,每个任务一个。if-else比较器检查哪些变量为真,并将您发送到相应的任务。如果只有一个变量为真,则比较器工作得足够好,但如果多个变量为真,则比较器工作得足够好。下面是一个更简化的代码版本,它显示了相同的错误 #include <stdio.h> #include <stdbool.h> int main() { bool tutorial = true; bool mission1 = true; b

我正在尝试制作一个包含6个任务(包括教程)的游戏。有6个布尔变量,每个任务一个。if-else比较器检查哪些变量为真,并将您发送到相应的任务。如果只有一个变量为真,则比较器工作得足够好,但如果多个变量为真,则比较器工作得足够好。下面是一个更简化的代码版本,它显示了相同的错误

#include <stdio.h>
#include <stdbool.h> 

int main()
{
bool tutorial = true;
bool mission1 = true;
bool mission2 = true;

if (tutorial) {
    printf("It does not work");
}
else if (tutorial, mission1) {
    printf("It does work");
}
else {
    printf("It doesn't work");
}
}
#包括
#包括
int main()
{
bool tutorial=true;
布尔任务1=真;
布尔任务2=真;
如果(教程){
printf(“它不工作”);
}
else if(教程,任务1){
printf(“它确实有效”);
}
否则{
printf(“它不工作”);
}
}
应该发生的是程序打印出“它确实有效”。相反,它打印出“它不工作”。虽然我知道如果我只想让程序打印中间的选项,我会

#include <stdio.h>
#include <stdbool.h> 

int main()
{
bool tutorial = true;
bool mission1 = true;
bool mission2 = true;

if (tutorial, mission1) {
    printf("It does not work");
}

}
#包括
#包括
int main()
{
bool tutorial=true;
布尔任务1=真;
布尔任务2=真;
如果(教程,任务1){
printf(“它不工作”);
}
}

这将阻止你玩一个以上的任务以及。请提供帮助。

若要测试教程是否已完成,而任务1和任务2尚未完成,您需要编写:

if (tutorial && !mission1 && !mission2) {
    printf("tutorial completed, mission 1 and 2 not completed");
}

我认为您应该使用“&&”而不是“,”,因此该行如下所示:

if (tutorial && mission1){
这将检查Turiorial和mission1是否都设置为true

如果(教程,mission1)不是您认为的意思,则语句
。在此语句中,
教程,mission1
是一个逗号表达式

逗号表达式的求值方法是:计算逗号左边的值,丢弃结果,然后计算公共项右边的值

因此,您评估
教程
,扔掉结果,然后评估
任务1
。因此,结果与您刚刚编写的
if(mission1)
相同


您可能是指
if(教程和任务1)
if(教程| |任务1)

您想做什么?任务1的
教程的预期结果是什么?您可能想了解更多有关的内容以及它的实际功能。您应该使用
教程和任务
教程| |任务
来实现值的逻辑组合。但这不会解决您的问题,因为
如果(教程)
将在执行任何其他测试之前成功。如果。。。否则,如果链真的起作用,而不是大量的<代码>如果语句,你可能想考虑使用真值表。