/**
* 检查投票通过率是否超过2/3。
*/
bool CheckVotePassed(int votes, int total)
{
const int votePassNumber = 2;
const int voteTotalNum = 3;
return votes/total > votePassNumber/voteTotalNum;
}
由于文字“2”和“3”都是整数类型,商也将是整数,因此为零。
就相当于在判断 votes/total > 0
修复此错误的正确方法是将其中一个操作数显式转换为浮点类型,例如:
return votes/total > tatic_cast<float>(votePassNumber)/voteTotalNum;
或者改变votePassNumber和voteTotalNum的类型。
const float votePassNumber = 2.0f;
const float voteTotalNum = 3.0f;