【发布时间】:2016-10-31 11:12:41
【问题描述】:
在我发现定义为 MAX(2,x) 的整数之一返回 -4 之前,我正在调试一段时间,即使 2 明显大于 -4。
这是我的代码运行的简化版本,因此您可以亲身体验不规则性。
NSLog(@"a) %i", (int)MAX(2,-4));
NSString *aString = @"90586381095716439405631195482586763570805293418319186736659080000000000000";
int aNumber = (int)MAX(2,10-MAX(1,(aString.length/5)));
NSLog(@"b) %i", aNumber);
NSLog(@"c) %i", (int)MAX(2,10-MAX(1,16)));
a) 将按预期记录 2。
b) 将记录 -4 这对我来说毫无意义。
c) 将按预期记录 2(现在 b 对我来说更没有意义了)
我没有得到什么? MAX 在 xCode 中是棕色的,这让我觉得它在 UIKit 或数学库的某个地方设置为 CLANG,如果是这种情况,可能只有在处理了第一个 MAX 之后才处理内部 MAX,因此嵌套 MAX 会导致奇怪的错误。但如果是这样的话,c) 不会也记录 -4 吗?
【问题讨论】:
标签: objective-c integer max integer-overflow