kyr*_*pav 1 c++ optimization arduino
为什么我在以下代码中没有得到正常结果?
void Motors::setCycleDutyA(int percentage) {
Serial.println(percentage);
Serial.println(pwmCycleDutyA);
float x=percentage/100;
Serial.print(x);
pwmCycleDutyA = int(255*x);
Serial.println(pwmCycleDutyA);
}
Run Code Online (Sandbox Code Playgroud)
当我调用该函数时:
Motors::setCycleDutyA(45);
Run Code Online (Sandbox Code Playgroud)
我得到这些结果:
45 255 0.000
45 0 0.000
45 0 0.000
我错过了什么?
这里:
float x=percentage/100;
Run Code Online (Sandbox Code Playgroud)
您正在执行整数除法(因为两个操作数都是整数).这意味着0每次结果都会percentage小于100.这解释了你得到的结果.
将其更改为:
float x=percentage/static_cast<float>(100);
Run Code Online (Sandbox Code Playgroud)
或者:
float x=percentage/100.f;
Run Code Online (Sandbox Code Playgroud)