V0lt
unsigned long long d2 = *(unsigned long long*)&d;
ето
1) &d - взять адрес переменной d, но поскольку d - double, тип адреса будет double*, поетому
2) делаем кастинг (изменение типа) (unsigned long long*)&d; теперь компилятор поймет что адрес - ето тип указателя (Pointer) на unsigned long long и....
3) взять вместимое по адресу - оператор звездочка *(unsigned long long*)&d;
тут проблема в другом - ежели например вместо double написать float то будет гав - почему? подумайте сами
Вариант с юнионом - тоже нормуль
unsigned long long d2 = *(unsigned long long*)&d;
ето
1) &d - взять адрес переменной d, но поскольку d - double, тип адреса будет double*, поетому
2) делаем кастинг (изменение типа) (unsigned long long*)&d; теперь компилятор поймет что адрес - ето тип указателя (Pointer) на unsigned long long и....
3) взять вместимое по адресу - оператор звездочка *(unsigned long long*)&d;
тут проблема в другом - ежели например вместо double написать float то будет гав - почему? подумайте сами
Вариант с юнионом - тоже нормуль