Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

335
Views
¿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?

over 4 years ago · Santiago Trujillo
3 answers
Answer question

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.

over 4 years ago · Santiago Trujillo Report

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.

over 4 years ago · Santiago Trujillo Report

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 )

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!