如何解决bool变量在if else比较器中共享相同值的问题
我正在尝试制作一个包含6个(计算本教程)任务的游戏。有6个布尔变量,每个任务一个。如果是,则比较器检查哪些变量为真,然后将您发送到适当的任务。如果只有1个变量为真,比较器就可以很好地工作,但如果有多个变量为真,则比较器就可以工作。这是呈现相同错误的代码的更简化版本。
#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");
}
}
应该发生的是程序打印出“它确实起作用”。而是打印出“它不起作用”。虽然我知道,如果我只想让程序打印中间选项,我会把
#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");
}
}
这也将阻止您执行多个任务。请帮忙。
解决方法
语句if (tutorial,mission1)
并不意味着您认为的含义。在此语句中,tutorial,mission1
是逗号表达式。
通过评估逗号剩余的内容,将结果扔掉,然后评估共同数的正确之处,来评估逗号表达式。
因此,您评估tutorial
,丢弃结果,然后评估mission1
。因此,结果与您刚写过if (mission1)
的结果相同。
您可能是指if (tutorial && mission1)
或if (tutorial || mission1)
。
要测试教程是否已完成以及任务1和2尚未完成,您需要编写:
if (tutorial && !mission1 && !mission2) {
printf("tutorial completed,mission 1 and 2 not completed");
}
,
我认为您应该使用'&&'而不是'',因此该行应如下所示:
if (tutorial && mission1){
这将检查 turorial和mission1是否都设置为 true
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。