Вы читаете из id
, который не инициализирован.
Оператор |=
выполняет побитовое ИЛИ левого и правого операндов и сохраняет результат в левом операнде.Это означает следующее:
x |= y;
То же, что и:
x = x | y;
В вашем коде у вас есть id
в качестве левой части оператора |=
, но вы никогдаинициализировано id
.Это означает, что вы читаете неинициализированное значение.Это вызывает неопределенное поведение .
Вам нужно либо инициализировать id
с некоторым известным значением, либо просто использовать =
вместо |=
.