Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Is the output of this program compiler dependent?

27 views
Skip to first unread message

Satan

unread,
Jan 16, 2022, 10:21:57 PM1/16/22
to
I read somewhere that the parameters of functions are evaluated right >>
to left but it all depends on the compiler. Therefore, does this mean
that the output of this program is "undefined" meaning there is no
definite answer!

#include <stdio.h>

void fun(int, int);

int main()
{
int i = 5;
fun(--i, i++);
fun(++i, i--);
printf("From Main: %d\n", i++);

return 0;
}

void fun(int x, int y)
{
printf("From Function: %d %d\n", x++, y--);
}

Richard Damon

unread,
Jan 16, 2022, 11:18:03 PM1/16/22
to
Yes, there is no sequencing between the evaluation of the various
parameters to the function, to those calls invoke undefined behavior.

Implementations might give additional promises, but that is beyond the
control of the standard, and there may be a 'normal' order they follow,
but that still doesn't make it a requirement, and you might get burned
by a case where the implementation did it different in some case because
of ...reasons... so do go by what seems to work.

Remember, doing what you expected is perfectly fine possible undefined
behavior, but you shouldn't count on it.
0 new messages