gpt4 book ai didi

c - 将 '&&' 移动到开关中

转载 作者:太空宇宙 更新时间:2023-11-04 06:32:04 24 4
gpt4 key购买 nike

我目前的代码有问题。我想要的是用 && 检查按钮,但是我不可能在案例中引用它们。

#include "n64.h"
#include "explode.h"

MarioStruct *Mario = (void*)M64_MARIO_STRUCT;

void _start() {
asm volatile("la $gp, _gp");
switch(Mario->pad->currentButton && )
{

case BUTTON_D_DOWN:
PrintXY(80, 80, "1, 2, 3");
break;
case BUTTON_D_UP:
PrintXY(80, 80, "Oh Hi");
break;
case BUTTON_D_LEFT:
PrintXY(80, 80, "Lollol");
break;
case BUTTON_D_RIGHT:
PrintXY(80, 80, "Noodle");
break;
default:
PrintXY(80, 80, "Default Msg");
break;
}
}

那么如何将开关(Mario->pad->currentButton &&)放到外壳上呢?例如:它在 If 语句中的样子:

if(Mario->pad->currentButton && BUTTON_D_DOWN)

最佳答案

你不能这样做,因为 case 标签的值必须是常量。

如果您的值是组合的位标志,您无法使用 switch() 检查它,因为没有要检查的单个值。

此外,我认为您在这里使用 && 是错误的,那是 bool 值(逻辑),听起来好像您想要 & 按位并用于掩蔽。

如果它是位,那么 if:s 的“rake”确实是正确的方法。

我在(遥远的!)过去使用的一个技巧是将位掩码解释为索引,并使用该索引读取函数指针的跳转表以直接转到负责的函数。但现在没有太多理由做这样的事情。

关于c - 将 '&&' 移动到开关中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19541854/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com