мне кажется, здесь возможны проблемы с переносимостью кода
Мне тоже так кажется, я сразу об этом сказал.
if((*(uint64_t*)&x)&0x8000000000000000){}
А так точно можно делать? В смысле, не undefined ли это behavior?
Ну, я бы ещё скобочек добавил для нужного мне порядка выполнения преобразований, но в
онлайн компилятор и так работает. А в остальном же преобразование типа указателя и потом битовая операция вроде бы не должны приводить к undefined behavior. Но за скобочки согласен, лучше больше:
if((*((uint64_t*)(&x)))&0x8000000000000000ull){}.
типа if((*(uint64_t*)&x)&0x8000000000000000){}.
Но хорошо бы написать отдельную вынесенную в хэдер функцию.
Это думаю должен уметь делать и вопрошающий, не всё же делать за него, идея вполне видна.
-- 18.09.2019, 20:19 --На самом деле даже интересно зачем надо отличать
от
...