1 неделю назад
C может превратить число 1 078 530 011 в число π
И это не магия! В Python преобразование int в float создаёт число с новым числовым значением. В C можно сделать совершенно другое: интерпретировать те же самые 4 байта как число другого типа. #include <stdio.h> #include <stdint.h> #include <string.h> int main(void) { uint32_t bits = 0x40490fdb; float pi; memcpy(&pi, &bits, sizeof(pi)); printf("%.6f\n", pi); // 3.141593 return 0; } Что здесь происходит? - 0x40490fdb - набор из 32 бит. - memcpy копирует эти биты в память переменной float. - IEEE 754 интерпретирует их как число с плавающей точкой...