c - 布尔变量在 if else 比较器中共享相同值的问题
问题描述
我正在尝试制作一个包含 6 个(包括教程)任务的游戏。有 6 个布尔变量,每个任务一个。if else 比较器检查哪些变量是正确的,并将您发送到适当的任务。如果只有 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");
}
}
这也会阻止你玩超过 1 个任务。请帮忙。
解决方案
该声明if (tutorial, mission1)
并不意味着您认为它意味着什么。在这个语句中,tutorial, mission1
是一个逗号表达式。
逗号表达式的求值是通过评估逗号左边的内容,丢弃结果,然后评估共同点右边的内容。
所以你评估tutorial
,扔掉结果,然后评估mission1
。因此,结果与您刚刚编写if (mission1)
的 .
您的意思可能是if (tutorial && mission1)
或if (tutorial || mission1)
。
推荐阅读
- java - 如何在真正的 Android 设备上按“主页”按钮
- spring-boot - 在 Weblogic 服务器上部署 Spring Boot 应用程序时出错
- java - Dropwizard API在码头时被阻止意外线程死亡
- c# - 在未安装 Access 的情况下使用 C# 在运行时压缩和修复 Access 数据库
- javascript - 将多个子字符串匹配到一个字符串
- pattern-matching - Logstash COMMONAPACHELOG 模式解析问题
- sql-server - 是否“使用
” 清除/重置声明的变量 - python - 单击单选按钮或更改 PyQt 中的旋转框时,组合框索引值返回默认值 0
- sql-server - 将数据从 CSV 插入 SQL server,插入问题
- python - 将命名元组有效插入熊猫数据帧