Новые возможности семейства функций printf() и scanf()В С99 для семейства функций printf() и scanf() предусмотрена новая возможность: они могут манипулировать с типами данных long long int и unsigned long long int. Модификатором формата для long long является ll. Например, в следующем фрагменте показано, как выводить значения типа long long int и unsigned long long int:
long long int val;
unsigned long long int u_val;
printf("%lld %llu", val, u_val);
Модификатор ll можно применять к спецификаторам формата: d, i, о, u и x — как для printf(), так и для scanf(). В С99 добавлен модификатор hh, который применяется для указания char-аргумента вместе со спецификаторами формата: d, i, о, u и x. Оба модификатора, ll и hh, можно использовать также вместе со спецификатором n. Спецификаторы формата a и A, которые были добавлены к printf(), заставляют выводить значение с плавающей точкой в шестнадцатеричном формате. Формат значения получается следующий: [-]0xh.hhhhp+d Если используется А, то x и p будут выводиться на верхнем регистре. Спецификаторы формата a и A были также добавлены к scanf() и они читают значение с плавающей точкой. В С99 разрешается при вызове printf() к спецификатору %f добавлять модификатор l (тогда получится %lf), но от этого нет никакой пользы[1]. В С89 %lf для printf() не определяется.
|
| |||||
|---|---|---|---|---|---|---|