¿Llamando a otra función desde printf?

Estoy haciendo un desafío simple de un libro en C / Objective-C, donde tengo que escribir un progtwig que calcula y muestra el cuadrado de un número entero, al mismo tiempo que pongo los números entre comillas.

Hice un progtwig que funciona con éxito pero tengo dos preguntas al respecto. Primero, teniendo en cuenta la idea de reducir la cantidad de código en mente, para practicar ser eficiente y conciso en mi código, llamé a mi función squareOfInteger desde mi statement printf . Aunque es aconsejable? Funcionó, pero me preocupa que esto pueda ser una mala práctica.

La otra cosa que me molesta es si debo o no reiterar que el tipo es un int dentro del parámetro de mi función antes de mi number variable, o si es suficiente declarar el resultado como de tipo int , y dejar de escribir tipo En el parámetro, que he hecho a continuación.

Aquí está mi código:

 #include  int squareOfInteger(number) { int square = number * number; return square; } int main(int argc, const char * argv[]) { int myNumber = 5; printf("\"%d\" squared is \"%d\".\n", myNumber, squareOfInteger(myNumber)); return 0; } 

Apreciaria muchísimo su ayuda.

Llamé a mi función squareOfInteger desde mi statement printf. Aunque es aconsejable? Funcionó, pero me preocupa que esto pueda ser una mala práctica.

Llamar a una función desde printf() no es malo. Pero puede haber escenarios que conduzcan a un comportamiento indefinido ya que no se especifica el orden de evaluación dentro de printf() Por ejemplo:

 int func(int *p) { *p =30; } int main() { printf("%d %d",num,func(&num)); return 0; } 

Aquí está llamando a func() , así como imprimiendo el valor de num para que tenga UB.

si es suficiente declarar el resultado como de tipo int, y omitir el tipo en el parámetro

Si no se especifica el tipo de argumento, entonces el valor predeterminado es int Pero siempre es bueno mencionar el tipo de los argumentos.

“Llamé a mi función squareOfInteger desde mi statement printf. ¿Es esto aconsejable?”

No hay nada de malo en llamar a la función desde dentro de una función. Depende del caso, donde dice que necesita conservar el valor cuadrado (como no en su caso donde solo necesita imprimir el valor) y realizar otras operaciones en él. me gusta:

 int value = myFun(100); int nextVal = myNextFun(value); 

“La otra cosa que me molesta es si debo o no reiterar que el tipo es un int dentro del parámetro de mi función antes de mi número de variable, o si es suficiente declarar el resultado como de tipo int, y omitir Escriba el parámetro, que he hecho a continuación “.

Sí, debe usar definir el tipo de número (en su caso, de manera predeterminada sería un tipo entero y fallaría si lo tiene de otro tipo) como una mejor práctica, ya que hará que el código sea más claro y legible.