C if-else比较器中bool变量共享相同值的问题
我正在尝试制作一个包含6个任务(包括教程)的游戏。有6个布尔变量,每个任务一个。if-else比较器检查哪些变量为真,并将您发送到相应的任务。如果只有一个变量为真,则比较器工作得足够好,但如果多个变量为真,则比较器工作得足够好。下面是一个更简化的代码版本,它显示了相同的错误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
#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的教程的预期结果是什么?您可能想了解更多有关的内容以及它的实际功能。您应该使用教程和任务
或教程| |任务
来实现值的逻辑组合。但这不会解决您的问题,因为如果(教程)
将在执行任何其他测试之前成功。如果。。。否则,如果链真的起作用,而不是大量的<代码>如果语句,你可能想考虑使用真值表。