why this code shows diffferent results

arun12138's Avatar, Join Date: Dec 2008
Newbie Member
Code:
main( )
{
float a = 15.5 ;
char ch = 'C' ;
printf ( "\n%f %c", a, ch ) ;
printit ( a, ch ) ;
getch();
 }
printit ( float sa, char sch )
{
 printf ( "\n%f %c", sa, sch ) ;
}
this shows 15.5 C in main printf() and 0.00 in printit() why?

Last edited by shabbir; 6Dec2008 at 12:50.. Reason: Code block
xpi0t0s's Avatar, Join Date: Aug 2004
Mentor
What compiler are you using?
Does it work correctly if you redefine printit to void instead of default-int and place it above main (or prototype it)?

Tried it in Visual Studio 2005 and it wouldn't compile because of the above; I set the return of printit to void and moved it above main and it worked fine.

So I'd guess this is either a compiler bug or a consequence of some of the default behaviour you're relying on here (mainly that when the compiler finds printit in use it assumes its prototype is "int printit()" ).