xap*_*hod 0 math objective-c ios
为什么这两个计算结果不同?这是xcode 6.1.
(lldb) print newBounds.size.height
(CGFloat) $0 = 446.5
(lldb) print newBounds.size.height * 6/4
(double) $1 = 669.75
(lldb) print newBounds.size.height * (6/4)
(double) $2 = 446.5
Run Code Online (Sandbox Code Playgroud)
它只是整数数学和推广类型的通常规则.
height * 6/4 == (height * (double)6) / (double)4 == (height * 6.0) / 4.0
Run Code Online (Sandbox Code Playgroud)
然而:
height * (6/4) == height * (double)(1) == height * 1.0
Run Code Online (Sandbox Code Playgroud)
因为6/4 == 1括号在推广之前强制要求对此进行评估double.
这与C,C++,Objective-C 等中的行为相同,所以在调试器中看到它也不会太惊讶.