If you write an expression which starts with a type,
followed here by a name and a semicolon,
then it is the declaration of a variable.
However, if you add, between the name and the semicolon,
some parentheses without arguments,
then it will be the prototype of a function, and not a variable.
This might seem a little more natural to you
if I write it in this fashion here, int f();
Here, we can see more clearly, maybe because of its name, that it is a function.
Or better yet, if I write, like in the previous example,
the function "demande nb" ("ask number"), which doesn't take any arguments.
Be very careful, this is indeed a function prototype.
And it has nothing to do with a variable. This is a common mistake.
If, however, between the parentheses,
you enter a value which is compatible with the type
which is at the beginning of the line,
then you have a variable declaration again,
and this time, with a value is also an initialization.
So this line is actually very close to the first line.
Here, we are simply adding a value for an initialization.
And it has absolutely nothing to do with the second line.
So be very careful with this sort of form.
Finally, for a function call, if we put a name with no type in front,
-- there is absolutely no type in front --
or we can have an "=" expression in front, for example z = a(5),
but there is no type here,
then it is of course a function call.
It might have seemed more natural to you if
I had written z = f(5).
There, you naturally recognize a call to a function f.
Or if I had written z = sqrt(2.0).
There, you recognize a function call.