#cpp #c
Частенько вижу, что аргументы в функцию передаются так: SDL_Init(SDL_INIT_VIDEO | SDL_INIT_TIMER | SDL_INIT_JOYSTICK) К указанным параметрам можно добавить и другие, также разделив их вертикальной чертой |. Объясните, пожалуйста, как это работает.
Ответы
Ответ 1
операция | - стандартная во многих языках операция побитового ИЛИ. Т.е. она применима к 2 числам и для каждого бита будет выполнено побитовое или. Пример: 310 | 1010 = 00112 | 10102 = 10112 = 1110. Это особенно удобно при использовании флагов как констант - степеней 2. Например у нас есть FLAG_A = 110, FLAG_B = 210, FLAG_C = 410 и так далее. Тогда FLAG_A | FLAG_C = 510 и в обратную сторону, 510 можно получить только такой комбинацией. P.S. в случае с флагами безболезненно заменяется на обычный +, но смотрится не так красиво.
Комментариев нет:
Отправить комментарий