Sta*_*ful 10 c math objective-c integer-division
我正在尝试计算iPhone应用程序中的一些数字.
int i = 12;
int o = (60 / (i * 50)) * 1000;
Run Code Online (Sandbox Code Playgroud)
我希望在这个例子中o为100(即毫秒),但它等于0,由NSLog(@"%d",o)显示.
这也等于0.
int o = 60 / (i * 50) * 1000;
Run Code Online (Sandbox Code Playgroud)
这等于250,000,这是从左到右的直接数学.
int o = 60 / i * 50 * 1000;
Run Code Online (Sandbox Code Playgroud)
什么在我头顶飞过?
谢谢,
尼克
Hig*_*ark 19
在Objective-C中/对整数参数执行整数除法,因此4/5被截断为0,3/2被截断为1,依此类推.在执行除法之前,您可能希望将一些数字转换为浮点形式.
您还遇到了优先问题.在表达中
60 / (i * 50) * 1000
Run Code Online (Sandbox Code Playgroud)
括号内的术语首先计算,因此60除以600,产生结果0
60 / i * 50 * 1000
Run Code Online (Sandbox Code Playgroud)
第一个操作是将60除以12,得到结果5,然后进行乘法运算.