Cómo imprimir un número positivo como un número negativo a través de printf

Al leer sobre printf (), descubrí que puede imprimir números tan positivos o negativos como lo desee el usuario siguiendo el código (para -). Pero el código no funciona y la salida es un valor positivo. Mencione dónde está el error .Gracias

#include int main() { printf (" %-d\n", 1977); return 0; } 

Por tus comentarios parece que has leído mal esta página . Los especificadores - y + hacen dos cosas completamente diferentes, y tampoco lo que piensas que ‘-‘ debería hacer.

Como han señalado otros, - deja justificación. El especificador + imprime números positivos con un signo más a la izquierda (y los números negativos aún obtienen un signo menos a la izquierda):

 printf("%d %d %+d %+d\n", -10, 10, -10, 10); 

salidas:

-10 10 -10 +10

%-d izquierda ajustará el campo entero, no volteará el signo. Haga esto en su lugar:

 printf (" %d\n", -1977); 

Aquí está el extracto completo de la print(3) debajo de los caracteres de la bandera :

        - El valor convertido debe dejarse ajustado en el campo límite-
               aria  (El valor predeterminado es la justificación correcta.) Excepto n
               versiones, el valor convertido se rellena a la derecha con
               espacios en blanco, en lugar de a la izquierda con espacios en blanco o ceros.  A - sobre-
               monta un 0 si se dan ambos.

Actualización0

Veo su verdadera pregunta ahora: para anteponer la salida con el signo apropiado, use el carácter de marca + para mostrar explícitamente el signo. De nuevo aquí está el extracto:

        + Un signo (+ o -) siempre debe colocarse antes de un número producido
               por una conversión firmada.  Por defecto, un signo se usa solo para neg-
               Números ativos.  A + anula un espacio si se utilizan ambos.

Y úselo así (la línea de comandos printf es casi idéntica):

 matt @ stanley: ~ / cpfs $ printf "% + d \ n" 3
 +3
 matt @ stanley: ~ / cpfs $ printf "% + d \ n" -3
 -3
 matt @ stanley: ~ / cpfs $ printf "% + u \ n" -3
 18446744073709551613

Tenga en cuenta que solicitar el signo explícitamente no implicará un tratamiento del entero correspondiente como se indica en el ejemplo %u anterior.

printf (" -%d\n", 1977); emitirá -1997 (mala forma de hacerlo), si desea que los números negativos se vuelvan positivos, haga printf (" %d\n", -1 * 1977); (Buena manera de hacerlo)

lea la referencia para una idea de cómo funcionan los especificadores de formato