gpt4 book ai didi

c - 如何仅当变量更改为特定值时使 if 条件为 true

转载 作者:行者123 更新时间:2023-11-30 18:53:36 25 4
gpt4 key购买 nike

让我们考虑以下程序:

while(1)
{
if(foo1 == HIGH)
{
printf("foo1 is high");
}
if(foo2 == HIGH)
{
printf("foo2 is high");
}
}

由于这些条件在 while(1) 循环中,当 foo1 为高电平时,printf 将继续打印,直到 foo1 code> 为 LOW,foo2 也是如此。

有什么可能的方法让我只能在条件成立时打印而不是连续打印?此外,当 foo1 变为低电平并再次变为高电平时,if 条件应该再次为真。

编辑

使用标志来检查条件在这里不起作用,因为

bool check = false;
while(1)
if(foo1 == HIGH && check == false)
{
printf("foo1 is high");
check = true;
}

这只会让它运行一次。但是,假设一段时间后,如果 foo1 再次变为高电平,则 if 条件将不会被执行,因为 check 仍然为 true,因为 bool check 是在 while(1 外部定义的)。如果我们在 while(1) 中定义它,那么 if 条件将继续进行,因为每次 check 都会设置为 false。

最佳答案

您需要一种方法来记住您已经显示了该消息。您可以为此使用 bool 变量。像这样的东西:

bool foo1MsgDisplayed = false;
bool foo2MsgDisplayed = false;

while(1) {
if(foo1 == HIGH && !foo1MsgDisplayed) {
printf("foo1 is high");
foo1MsgDisplayed = true;
}
if(foo2 == HIGH && !foo2MsgDisplayed) {
printf("foo2 is high");
foo2MsgDisplayed = true;
}
}

编辑根据您的评论,您似乎想在 foo 更改为 low 时重置标志:

bool foo1MsgDisplayed = false;
bool foo2MsgDisplayed = false;

while(1) {
if(foo1 == HIGH) {
if(!foo1MsgDisplayed) {
printf("foo1 is high");
foo1MsgDisplayed = true;
}
}
else {
foo1MsgDisplayed = false;
}

if(foo2 == HIGH) {
if(!foo2MsgDisplayed) {
printf("foo2 is high");
foo2MsgDisplayed = true;
}
else {
foo2MsgDisplayed = false;
}
}

关于c - 如何仅当变量更改为特定值时使 if 条件为 true,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32665328/

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