getting return value from function without return statement.

S

Seong-Kook Shin

Hi.

Just curiocity,

Because of pre-ANSI C, it is possible to have a function without specifying
return type of a function (which makes the return type 'int', though) and
give no 'return' statement. For example:

foo(int a, int b)
{
int sum;
sum = a + b;
}

void
bar(void)
{
int i = foo(1, 2);
...
}

In above code, the 'i' variable in bar() will have no useful value.
But what does the standard says? I overlooked the ISO C standard, but
found no mention about this problem.

Is this a kind of 'undefined bebavior'? Or 'unspecified behavior'?

If there's wrong point on my explanation, please enlighten me. ;-)
Or, could you give me the section number of ISO C document where it deals
with such case?
 
R

Richard Bos

foo(int a, int b)
{
int sum;
sum = a + b;
}

void
bar(void)
{
int i = foo(1, 2);
...
}

In above code, the 'i' variable in bar() will have no useful value.
But what does the standard says?

That it invokes undefined behaviour (which is worse than having no
useful value; it could crash, for example):

# 12 If the } that terminates a function is reached, and the value of
# the function call is used by the caller, the behavior is undefined.

That's from 6.9.1.

Richard
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,769
Messages
2,569,580
Members
45,055
Latest member
SlimSparkKetoACVReview

Latest Threads

Top