• Empleos
  • Sobre nosotros
  • profesionales
    • Inicio
    • Empleos
    • Cursos y retos
    • Preguntas
    • Profesores
  • empresas
    • Inicio
    • Publicar vacante
    • Nuestro proceso
    • Precios
    • Pruebas Online
    • Nómina
    • Blog
    • Comercial
    • Calculadora de salario

0

249
Vistas
¿Por qué no escribimos int x = printf("texto"); ya que la instrucción printf() devuelve un valor entero cada vez?

Dado que la función printf devuelve un valor entero cada vez que se usa (la cantidad de caracteres escritos en la pantalla), ¿no debería ser obligatorio almacenar este valor en una variable int cada vez que se llama a printf ?

Editar:

Si una función devuelve cierto valor, ¿por qué C no hace necesario almacenar el valor en el momento de la llamada a la función?

about 3 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Puede ser, sólo si es necesario.

Si nosotros no me importa no desea que se utilice el valor de retorno. no sirve de nada almacenar lo mismo.

about 3 years ago · Santiago Trujillo Denunciar

0

Si tiene una idea de cómo va a usar x, entonces, por supuesto, puede escribir

 int x = printf( "text" );

De lo contrario, el valor de retorno de la función simplemente se descarta porque no se usa.

Y en la mayoría de los casos, los programadores no encuentran una aplicación útil del valor de retorno de printf.

Sin embargo, a veces se puede usar, por ejemplo, para imprimir tablas con columnas alineadas.

Por ejemplo

 int n = printf( "%s", SomeString ); if ( n < COLUMN_WIDTH ) printf( "%*c", COLUMN_WIDTH - n, ' ' );

Considere este programa simple

 #include <stdio.h> int main( void ) { const int COLUMN_WIDTH = 20; int n = printf( "%s", "Hello" ); if ( n < COLUMN_WIDTH ) printf( "%*c", COLUMN_WIDTH - n, ' ' ); printf( "%s", "World" ); }

Su salida es

 Hello World

Aquí hay otro ejemplo donde el valor de retorno de printf encuentra una aplicación útil.

Supongamos que necesita generar una secuencia de números separados por una coma, como por ejemplo

 1, 2, 3, 4, 5, 6, 7, 8, 9

¿Cómo generar una secuencia de este tipo usando solo un bucle sin colocar declaraciones de impresión fuera del bucle?

Aquí hay un programa que muestra cómo se puede hacer basado en el uso del valor de retorno de la función printf. :) Intentalo.

 #include <stdio.h> #include <stdlib.h> #include <time.h> int main( void ) { size_t n = 0; printf( "Enter the number of elements in the array (greater than 0): " ); scanf( "%zu", &n ); if ( n == 0 ) exit( 1 ); int a[n]; srand( ( unsigned int )time( NULL ) ); size_t i; for ( i = 0; i < n; i++ ) a[ i ] = rand() % n; i = 0; do { printf( "%d", a[ i ] ); } while ( ++i < n && printf( ", ") > 0 ); return 0; }

En cuanto a su programa

 int foo(int x) { return x; } int main() { foo(10); }

entonces llamar a la función foo no tiene ningún efecto. No hace nada y, de hecho, se puede quitar. Y no todos los compiladores emiten un mensaje para su programa. Parece que el compilador que está utilizando tiene una opción de compilador que obliga al compilador a considerar advertencias como errores. Entonces su compilador quiere que preste atención a que la llamada de la función no tenga ningún efecto. Es posible que haya cometido un error lógico.

Por otro lado, llamar a la función printf tiene un efecto visible.

about 3 years ago · Santiago Trujillo Denunciar

0

Puede almacenar el valor de retorno si lo necesita, por ejemplo, para asegurarse de que está emitiendo la cantidad deseada de caracteres (suena muy poco probable que uno tenga estas necesidades, especialmente considerando que en producción generalmente tiene módulos de registro más completos para manejar sus salidas).

También puede decir explícitamente que no le importa ese valor devuelto al compilador con un (void) como en

 (void) printf("hello world\n");

Tenga en cuenta que esto no tiene más implicaciones que la supresión de las advertencias de algunas herramientas (por ejemplo, lint )

about 3 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Nuestro proceso Comercial
Legal
Términos y condiciones Política de privacidad
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recomiéndame algunas ofertas
Necesito ayuda