В таких языках, как C, информация всегда "сохраняется" в том виде, в каком вы интерпретируете данные . Компилятор добавляет некоторую привлекательность, которая в некоторой степени понимает типы ваших переменных и пытается предотвратить операции, которые не имеют смысла.
Например, предположим, что у вас есть биты: 0xFFFFFFFF
. Если вы интерпретируете их как "32b без знака int", вы получите 4294967295
. Если вы интерпретируете их как «32b со знаком int», вы получите -1
(*) . Если вы интерпретируете их как двойные, бог знает, что вы получите.