OR bit a bit de constantes
Ao ler alguma documentaçãoaqui, Me deparei com isso:
unsigned unitFlags = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit;
Não tenho ideia de como isso funciona. Eu li sobre os operadores bit a bit em C, mas não entendo como você pode ajustar três (ou mais!) Constantes dentro de um int e, posteriormente, ser capaz de extraí-los de volta do int? Indo além da documentação, também encontrei isso, provavelmente relacionado:
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),
} CFCalendarUnit;
Como os(1 << 3)
declarações / variáveis funcionam? Desculpe se isso é trivial, mas alguém poderia me esclarecer explicando ou talvez postando um link para uma boa explicação?