printf function help

Vaughn Treude plug-devel@lists.PLUG.phoenix.az.us
Tue Mar 2 07:07:02 2004


On Monday 01 March 2004 14:18, you wrote:
> hi,
>
> Iam sorry i think i didnt make the question right first time
>
> Can you please run the program below and give me a reason for the output
> #include <stdio.h>
> int main()
> {
> printf("%d") ;
> return 0;
> }
>
> watchout
>
> > printf("%d",x) ;
>
> there is no x my program. Its only **********printf("%d")
> ;****************** my program still compiles and prints out value 34603777
>
> Can any one give me a reason for this output.
> thx
> tarun

Tarun

The reason you get this output is because when you call a function in C, the 
underlying assembly code  pushes all the parameter values on the stack, and 
then calls the function.  Within that function, the stack is where it gets 
the parameters.  The printf function sees the "%d" specifier in the string, 
so it's expecting a valid numeric value to be there on the stack, and not 
knowing any better, it's pulling out a garbage value and printing it.  This 
is relatively harmless with the "%d" specifier, but is nasty with the "%s" 
(string) specifier, because the latter will pull a value off the stack and 
treat it as a pointer, often causing a seg fault.

Vaughn
>
>
>
>
> coberr@scottsdaleins.com wrote:
>
> %d prints the value of argument in signed decimal notation. For example,
> this will print the value of x.
>
> #include
> int main()
> {
> float x=10;
> printf("%d",x) ;
> return 0;
> }
>
>
> Try 'man 3 printf' for details....
>
>
>
>
>
> Tarun Karra
> T
> To: plug-devel@lists.PLUG.phoenix.az.us
> Sent by: cc:
> plug-devel-admin@lists.PLU
> G.phoenix.az.us bcc:
> Subject: printf
> function help
>
> 03/01/2004 11:45 AM
> Please respond to
> plug-devel
>
>
>
>
>
>
> hi ,,
>
> what does this program print and why
> I know printf can take variable arguments..
> how does compiler treat %d in this program..
> #include
> int main()
> {
> printf("%d") ;
> return 0;
> }
>
> thx
> tarun
>
>
> Do you Yahoo!?
> Get better spam protection with Yahoo! Mail
>
>
>
>
>
>
>
>
> _______________________________________________
> PLUG-devel mailing list - PLUG-devel@lists.PLUG.phoenix.az.us
> http://lists.PLUG.phoenix.az.us/mailman/listinfo/plug-devel
>
> ---------------------------------
> Do you Yahoo!?
> Get better spam protection with Yahoo! Mail

----------------------------------------
Content-Type: text/html; charset="us-ascii"; name="Attachment: 1"
Content-Transfer-Encoding: 7bit
Content-Description: 
----------------------------------------