is fstat or printf error?



hello,
$uname -a
Linux linux 2.6.5-7.97-bigsmp #1 SMP Fri Jul 2 14:21:59 UTC 2004 i686
i686 i386 GNU/Linux

$cat t.c

#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <stdio.h>

int
main()
{
FILE *tmpfl = tmpfile();
struct stat st;
fstat(fileno(tmpfl), &st);
printf("dev:%d, %d, %d\n", st.st_dev, 1, 5); // <======
printf("%d, %d, %d", 1, 5,7);
getchar();
}

$cc t.c
$./a.out
dev:2049, 0, 1
1, 5, 7
$

// <====== is error. Would you give me some clue?
.