Какой особый смысл в том, чтобы использовать hexidecimal, для определения значения переменных?
#define SPAWNFLAG_NOT_EASY 0x00000100
#define SPAWNFLAG_NOT_MEDIUM 0x00000200
#define SPAWNFLAG_NOT_HARD 0x00000400
#define SPAWNFLAG_NOT_DEATHMATCH 0x00000800
#define SPAWNFLAG_NOT_COOP 0x00001000
Это как-то ускоряет работу на машинном уровне или может быть имеет какие либо плюсы? Довольно часто вижу такой код, особенно в игровых проектах. Почему именно hexidecimal? Почему не любой другой способ?
Отдельные биты удобно задавать именно шестнадцатиричными значениями, поскольку они напрямую транслируются в двоичные, но при этом гораздо компактнее. Сразу видно, что SPAWNFLAG_NOT_EASY задает бит 8, а, скажем, SPAWNFLAG_NOT_COOP - бит 12. Однако ничто не мешает то же самое записать десятичными константами:
#define SPAWNFLAG_NOT_EASY 256
#define SPAWNFLAG_NOT_MEDIUM 512
#define SPAWNFLAG_NOT_HARD 1024
#define SPAWNFLAG_NOT_DEATHMATCH 2048
#define SPAWNFLAG_NOT_COOP 4096
В принципе, наметанный глаз сразу выделяет степени двойки, но все же это не так наглядно и позиции конкретных битов не так очевидны.
В C++14 появились двоичные литералы и возможность разделения групп апострофами, так что ваш пример в нем можно записать и так:
#define SPAWNFLAG_NOT_EASY 0b0000'0001'0000'0000
#define SPAWNFLAG_NOT_MEDIUM 0b0000'0010'0000'0000
#define SPAWNFLAG_NOT_HARD 0b0000'0100'0000'0000
#define SPAWNFLAG_NOT_DEATHMATCH 0b0000'1000'0000'0000
#define SPAWNFLAG_NOT_COOP 0b0001'0000'0000'0000
Возможно, такая форма получит широкое применение, когда, наконец, вымрет поколение, привыкшее к шестнадцатиричным цифрам.
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости