#include <stdio.h>


int main(void)

{

float n1=3.0;

double n2=3.0;

long n3 = 2000000000;

long n4=  1234567890;

printf("%.1e %.1e %.1e %.1e\n",n1,n2,n3,n4);

printf("%ld %ld\n",n3,n4);

printf("%ld %ld %ld %ld \n",n1,n2,n3,n4);

return 0;

}


책에서는 %e 지정자는 printf()에게 double형 값(저자의 시스템에서 8바이트 값)을 기대하게 만든다.

라고 되어 있는데 그러면 %e는 8바이트가 필요해서 바뀐다는 말인가요? 

그러면 %ld에는 왜 8바이트가 되는 건가요? 


그리고 이건 욕심이지만 마지막줄 %ld는 4바이트씩 차지해서  첫번째 %ld는 앞에 4바이트 두번쨰 %d는 뒤에 4바이트 해서

출력할때는 0 1074266112 0 1074266112 가 나오는데 이건 첫번째 priintf() n3,n4 처럼 오류

겠죠?