use*_*946 3 c algorithm conditional if-statement objective-c
我有一个if声明,然后是几个else if声明.所有if/else if语句的参数结构都是这样的:
if (100 <= x <= 149) //do this
else if (150 <= x <= 199) //do that
else if ...etc...
Run Code Online (Sandbox Code Playgroud)
但是,由于某种原因,只有第一个if语句被执行.X可以是200,只识别第一个if语句.
当X不符合前面语句的参数时,我不确定为什么它不会转移到下一个if语句.这在Obj-C中不起作用吗?任何帮助表示赞赏.谢谢
Dar*_*ust 18
你需要改写语句,如:
if (x >= 100 && x <= 149) {
} else if (x >= 150 && x <= 199) {
} ...
Run Code Online (Sandbox Code Playgroud)
您的第一个if评估如下:
if ((100 <= x) <= 149)
Run Code Online (Sandbox Code Playgroud)
我们来看看它是如何评估的:
x = 200,(100 <= 200)则为true,因此计算值1(表示true).然后1 <= 149也是如此.x例如10,如果值小于100,(100 <= 10)则为false,因此计算结果为值0(表示为false).再次,0 <= 149是真的.因此无论价值如何x,整个表达式总是如此.
Dav*_*ave 12
C不是数学,所以
if (100 <= x <= 149)
Run Code Online (Sandbox Code Playgroud)
是不一样的
if (100 <= x && x <= 149)
Run Code Online (Sandbox Code Playgroud)
这是你的意思.前者将永远是真实的,因为100 <= x <= 149成为
((100 <= x) <= 149)
Run Code Online (Sandbox Code Playgroud)
留下两种可能性: (1 <= 149)或(0 <= 149).两者都是真的.