%-d
Отрегулирует целое поле слева, оно не будет переворачивать знак.Сделайте это вместо:
printf (" %d\n", -1977);
Вот полная выдержка из print(3)
под Флаговые символы :
- The converted value is to be left adjusted on the field bound‐
ary. (The default is right justification.) Except for n con‐
versions, the converted value is padded on the right with
blanks, rather than on the left with blanks or zeros. A - over‐
rides a 0 if both are given.
Update0
Теперь я вижу ваш истинный вопрос: чтобы добавить к выводу соответствующий знак, используйте символ флага +
для явного отображения знака.Снова вот выдержка:
+ A sign (+ or -) should always be placed before a number produced
by a signed conversion. By default a sign is used only for neg‐
ative numbers. A + overrides a space if both are used.
И используйте это так (командная строка printf
в основном идентична):
matt@stanley:~/cpfs$ printf "%+d\n" 3
+3
matt@stanley:~/cpfs$ printf "%+d\n" -3
-3
matt@stanley:~/cpfs$ printf "%+u\n" -3
18446744073709551613
Имейте в виду, что явный запрос знака выиграл 't подразумевает обработку соответствующего целого числа со знаком, как в примере %u
выше.