Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

340
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda