I am doing a simple challenge from a book on C/Objective-C where I have to write a program that computes and displays the square of an integer, while also putting the numbers in quotation marks.
I made a program that works successfully but I have two questions about it.
Firstly having had the the idea of cutting back on the amount of code in mind, to practice being efficient and concise in my code, I called my squareOfInteger
function from my printf
statement. Is this advisable though? It worked but I'm worried this might be bad practice?
The other thing nagging at me is whether or not I need to reiterate the type as being an int
inside the parameter of my function before my variable number
, or whether it is enough to declare the result as being of type int
, and leaving out type in the parameter, which I have done below.
Here is my code:
#include <stdio.h>
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;
}
I would greatly appreciate your help.
There is nothing wrong in calling the function from within a function. It depends on case, where you say need to retain the squared value (as not in your case where you just need to print the value) and perform other operations on it. like:
Yes you should use define the type of number (in your case as by default it would be integer type and would fail if you have it of other type) as a best practice as it will make code more clear and readable.
Calling a function from
printf()
is not bad. But there might be scenarios leading to undefined behavior since the order of evaluation withinprintf()
is not specified.For example:Here you are calling
func()
as well as printing the value ofnum
so you have UB.If the type of the argument is not specified then it defaults to
int
.But it is always good to mention the type of the arguments.