gpt4 book ai didi

编译器跳转函数if、else if

转载 作者:行者123 更新时间:2023-11-30 21:19:28 25 4
gpt4 key购买 nike

我正在尝试解决一个问题:当我使用我的函数时,编译器会跳过对它的调用。我尝试在调试器中单步调试程序,但它跳过了函数调用。

为什么函数调用被跳过?

我这样做:

void VoltageToPercent(short int Voltage, short int output){

if((Voltage < 400) | (Voltage > 300)){
output = 10;
}
else if((Voltage > 700)|(Voltage < 850) ){
output = 20;
}
else if((Voltage > 1100)|(Voltage < 1300) ){
output = 30;
}
else if((Voltage > 1400)|(Voltage < 1800)){
output = 40;
}
else if((Voltage > 1900)|(Voltage < 2200) ){
output = 50;
}
else if((Voltage > 2300)|(Voltage < 2700) ){
output = 60;
}
else if((Voltage > 2700)|(Voltage < 3100)){
output = 70;
}
else if((Voltage > 3200) | (Voltage < 3600)){
output = 80;
}
else if((Voltage > 3300) | (Voltage < 4100)){
output = 90;
}
else if((Voltage > 4200) | (Voltage < 4600)){
output = 100;

}
}

最佳答案

代码行有两个问题,例如:

if((Voltage < 400) | (Voltage > 300)){

1) 单个 | 是一个二进制或,这不是您想要的。如果你想要一个逻辑或做 ||

2)但是,逻辑是错误的。这永远是真的。你写:“如果一个数字小于 400 或大于 300”。所有数字都满足这一点!所以这个表达式总是正确的。

您可能需要一个逻辑与 (&&),例如:

if((Voltage < 400) && (Voltage > 300)){

关于编译器跳转函数if、else if,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48856013/

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