#include <stdio.h>

struct T{
short x;
char y;
};

struct S{
char x;
struct T* t;
short y;
};

int main(){
struct S a[10];
struct S* p=&a[0];
struct S* q=&a[3];

printf("%d\n", (int)(q-p));
printf("%d\n", (int)q-(int)p);
printf("%d\n", q-p);
// printf("%d\n", (int)q-p);

return 0;
====================================

결과는 똘똘한 님들이 예상한대로
첫번째 3
두번째 36
세번째 3
이잖아
근데 왜 이것들이 나오는질 모르겠네
q-p 하면 포인터 연산인가? 저기에 (int) 로 형변환을 왜 한건지 모르겠네
세번째 프린트문  (주석처리한부분) 이랑 첫번째 프린트문 이랑 답은 같고,

두번째는 36인거 포인터 q와 p사이의 바이트 수를 계산한거 맞나?

요약하면
1. 왜 저런 답이 나오는가
2. (int)(q-p), (int)q-(int)p 의 값이 다른건 왜인가

부탁좀