我讀文檔NSCalendar
和好奇,我更深入地CFCalendarUnit
,我看到這一點:枚舉Objective-C和「<<」操作符
typedef enum {
kCFCalendarUnitEra = (1 << 1),
kCFCalendarUnitYear = (1 << 2),
kCFCalendarUnitMonth = (1 << 3),
kCFCalendarUnitDay = (1 << 4),
kCFCalendarUnitHour = (1 << 5),
kCFCalendarUnitMinute = (1 << 6),
kCFCalendarUnitSecond = (1 << 7),
kCFCalendarUnitWeek = (1 << 8),
kCFCalendarUnitWeekday = (1 << 9),
kCFCalendarUnitWeekdayOrdinal = (1 << 10),
kCFCalendarUnitQuarter = (1UL << 11),
kCFCalendarUnitWeekOfMonth = (1UL << 12),
kCFCalendarUnitWeekOfYear = (1UL << 13),
kCFCalendarUnitYearForWeekOfYear = (1UL << 14),
} CFCalendarUnit;
我使用這個名字:
NSUInteger preservedComponents = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit;
,並返回124
所以我嘗試這樣做:
NSUInteger preservedComponents = NSEraCalendarUnit | NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit;
,我也得到30
。
我無法弄清楚。怎麼運行的?
2 + 3 + 8 + 16 = 30. 2 + 4 + 8 + 16 + 32 + 64 = 124.你的問題到底是什麼?自然地,按位OR操作數恰好等於+,因爲每個操作數總是隻有一個唯一的位。 –
是的,在你下面有很多人回答之前。只是要清楚... 2 + 3 + 8 + 16不是30 ... 2 + 4 + 8 + 16是。 – Kuba
當然,我打算寫2 + 4 + 8 ... –