Я скачал исходный код Xinu для x86 с https://xinu.cs.purdue.edu/files/Xinu-code-Galileo.tar.gz.
Насколько я могу понять реализацию для printf
(lib/printf.c
lib/doprnt.c
) сказать, что он просто не поддерживает модификаторы длины. Это означает, что, например, это:
long int n = 42;
printf("%ld\n", n);
не будет работать. Я предлагаю попробовать это в вашей системе.
Это не соответствует реализации C (и, вероятно, не предназначено).
Кажется, она поддерживает большинство стандартных спецификаторов преобразования ("%d"
, "%u"
, "%x"
, "%f"
, et c.).
Если вы хотите напечатать значение long double
, я думаю, что лучшее, что вы можете сделать, это либо преобразовать его в double
и использовать "%f"
(который может потерять диапазон и / или точность) или написать собственный код для преобразования значения long double
в строку. (Или запустите ваш код в другой системе).
Отказ от ответственности: я не пробовал этого, я только изучил исходный код и только для x86-версии системы.