This is the mail archive of the
gcc-help@gcc.gnu.org
mailing list for the GCC project.
RE: different output from the gcc
- To: gcc-help at gcc dot gnu dot org
- Subject: RE: different output from the gcc
- From: David Korn <dkorn at pixelpower dot com>
- Date: Mon, 16 Oct 2000 17:19:59 +0100
>> the following program prints different outputs on the terminal.
>>
>> #include <stdio.h>
>> int main()
>> {
>> int i=10, j=20;
>> printf("%d %d");
>> return 0;
>> }
>>
>>
>> on windows nt, prints : 38076236 1627415320
>> on RH linux , prints : 20 10
>> on sun solaris , prints : 67584 -1341572
>
>Are you sure you don't mean printf("%d %d", i, j) ?
>
>If you don't provide the arguments corresponding to
>the printf control string, printf just scoops up
>whatever happens to be on the stack, which is
>(expectedly) system dependant. Or am I missing
>something?
Roughly. Under some calling conventions, the first <n> arguments are
passed in registers. I would guess that Linux does that, and so printf
is getting the old values in those registers, which had been used as
temporaries for i and j; the other systems are passing stack crud.
DaveK
--
"The secret of life is honesty and fair dealing. If you can fake that,
you've got it made." -Groucho Marx