Я просто переживаю кучу интервью с С++, чтобы убедиться, что нет ничего очевидного, что я не знаю. До сих пор я не нашел ничего, что я уже не знал, кроме этого:
long value;
//some stuff
value &= 0xFFFF;
Вопрос: "Что не так с этим кодом?" И намекает, что это что-то связано с целевыми архитектурами.
Если ответ не просто "значение не инициализировано", я не вижу никакой проблемы. Насколько я могу судить, он просто маскирует 2 младших значащих байта значения, а long
гарантированно составляет не менее 2 байтов, поэтому проблем там нет.
Возможно, возможно, что long
может быть только 2 байта в целевой архитектуре, и вы можете потерять бит знака? Или возможно, что 0xFFFF - это int
и int
- всего 2 байта?
Спасибо заранее.