为什么我的整数范围不起作用?

时间:2013-02-12 22:12:26

标签: xcode int

我正在使用Body Mass Index,我想知道为什么我的“范围”系统只将标签设置为一个值。有没有更好的方法来设置它会更好地工作?

   int bmiInt = currentBMI;
if ( 0<=bmiInt <= 18.5) {
    weightStatus.text = @"Status: Underweight";
}
if (18.6 <= bmiInt <= 24.9) {
    weightStatus.text = @"Status: Normal weight";
}
if (25 <= bmiInt <= 29.9) {
    weightStatus.text = @"Status: Overweight";
}
if (bmiInt >= 30) {
    weightStatus.text = @"Status: Obese";
}

由于某些原因,即使bmiInt不在该范围内,weightStatus.text也总是等于@“状态超重”。为什么呢?

1 个答案:

答案 0 :(得分:1)

0 <= bmiInt <= 18.5没有按照您的想法行事。比较运算符的返回值为01,表示true和false。此表达式可以重写为(0 <= bmiInt) <= 18.5,这意味着在评估第一次比较0 <= bmiInt后,您最终会得到0 <= 18.51 <= 18.5,这两者都会评估为1,传递条件。

对于前3个条件,这将是正确的,这意味着除非bmiInt >= 30评估为true,否则您的标签将始终显示@"Status: Overweight"

你想重写这个像

if (0 <= bmiInt && bmiInt <= 18.5) {
    ...
}