• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

포인터 변수끼리의 산술연산..?

21.12.02 18:02 작성 조회수 181

0

int main()

{
int a = 3;
int *ptr_a = &a;

std::cout << int((ptr_a + 1) - ptr_a) << std::endl;
}


저 연산 결과가 4가 나올 거라고 생각했는데 1이 나오더라구요, 각각 (int)로 캐스팅할 땐 4가 나왔는데.
저 연산은 그냥 ptr_a 가 상쇄되어서 그런건가요..? 아니면 그 떨어진 간격을 결과로 나타내어서 그렇게 나오는 것인가요?

답변 1

답변을 작성해보세요.

0

아 서치하다가 간격을 나타내는 거라고 한 걸 발견했습니다!! 

근데 그걸 int로 캐스팅 했을 때,  data size만큼의 값이 아니라 1이 나오는건  산술연산의 결과 자체가 이미 int형이어서 그런 것인가요..? 

안소님의 프로필

안소

2021.12.07

음 그건 아니구요!  https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=tipsware&logNo=221192754086 이 블로그의 2번을 읽어보시면 궁금증 해결 되실 것 같습니다. (두 int 포인터끼리 뺄셈하면 4가 아니라 1이 나옵니다)

감사합니다!