Компиляторы могут изменять размер типа long double, потому что разработчики компиляторов самостоятельно выбирают предельные размеры для типов, исходя из аппаратных возможностей компьютера. 2
Например, компилятор g++ Windows для long double использует 16 байт, а компилятор в Visual Studio и clang++ под Windows для long double используют 8 байт. 2
Также есть специализированные реализации C, которые предназначены для облегчения запуска старого кода для определённой среды, и в таком случае компилятор может делать размеры типов такими, какими они должны быть, чтобы соответствовать старому коду. 1