То, что вы делаете, в основном лжет (или, по крайней мере, изменяет) вашей библиотеке. Если это намеренно или случайно не имеет значения.
Вы говорите библиотеке, что хотите напечатать значение double
.
Не зная реального типа, printf
извлекает содержимое для double
из списка параметров переменной.
Но затем вы помещаете адрес в список параметров, который имеет неправильный тип и неправильный размер.
Это означает не только то, что значение для этого параметра напечатано неправильно, но также и то, что неправильное количество байтов потребляется от входа.
Следовательно, второй параметр может быть напечатан неправильно, потому что printf
читает с неправильного адреса.