printf("%d",func(i));
¿Es esto posible en C?
Pensemos que func(i)
es una función separada, ¿podemos llamarla dentro de printf
o scanf
?
Sí. Aunque es bastante especial en algunos aspectos, printf
es solo otra función. Y una llamada a la función puede ser parte de una expresión. Y los argumentos que pasas a las funciones son en sí mismos expresiones.
Una expresión es cualquier cosa que puedas calcular. Asi que
i + 1
es una expresion. Pero simplemente claro
i
También es una expresión (más simple). Y simplemente claro
1
Es una expresión aún más simple.
Construimos grandes expresiones de las más pequeñas. Entonces, si expr1
es una expresión y expr2
es otra expresión, entonces
expr1 + expr2
Es una expresión más grande que los combina.
Al igual que puede tomar dos pequeñas expresiones (a veces las llamamos “subexpresiones”) y combinarlas para formar una expresión más grande con el operador +
, también podemos tomar algunas expresiones y combinarlas llamando a una función:
f(expr1, expr2)
Ahora, volviendo a tu pregunta, la llamada.
func(i)
es una expresion. Pero cuando llama a printf
, lo que espera ver para los argumentos es
printf(expression, expression, expression, ...)
Ahora, en printf's
caso printf's
, esa primera expresión debe ser una cadena, y es casi siempre una cadena constante. Pero los argumentos restantes pueden ser cualquier cosa: 1
, i
, i + 1
, func(1)
o casi cualquier cosa:
printf("%d %d %d %d %d\n", 1, i, i+1, func(i), i+1+func(i));
La única cosa de la que preocuparse, por supuesto, es que tiene tantas expresiones como argumentos adicionales como signos de %
en el primer argumento (es decir, en la cadena de formato), y los tipos de esos argumentos adicionales deben coincidir con los tipos esperado por los especificadores de formato particulares que ha utilizado ( %d
, %f
, %s
, etc.).
#include int sum(int ,int ); void main() { int num1,num2; printf("Enter two numbers: "); scanf("%d %d",&num1,&num2); printf("Sum of %d and %d is: %d",num1,num2,sum(num1,num2)); //function call in print statement } int sum(int num1,int num2) //function to add two numbers`` { int result; result=num1+num2; return result; }