injoon2018   2년 전

안된다면 말씀해주세요 지우겠습니다;;

C언어 코드인데   

printf("%p %.2x\n",&start[i], start[i]);

show_bytes((byte_pointer) &x, sizeof(int)); 

이 두 분이 이해가 안갑니다.

우선  printf("%p %.2x\n",&start[i], start[i]); 에서 %.2x  의 역할이 뭔가요 ?? %x 면 해당 자료형으로 출력하일테고  %.2는 소수점 둘째자리까지 출력하라인데 섞여있으니 영 감이 안오네요;;

그리고  show_bytes((byte_pointer) &x, sizeof(int)); 에서 (byte_pointer)&x 이 부분이 이해가 안가네요. 형 변환을 하는 것 같은데 형변환을 하면 데이터 손실이 발생하지 않나요? (unsigned char* 이니..)막상 돌려보면 데이터 손실 없이 출력이 잘 되네요

djm03178   2년 전

질문은 올리셔도 되는데, 카테고리는 질문으로 해주시는 게 좋습니다.

레퍼런스 https://en.cppreference.com/w/... 에 따르면 .은 precision을 정해주는 서식이고, 정수에 쓰였을 경우 자릿수를 맞추어 남는 자리에 0을 채워줍니다. 또한 %.2x는 %02x라고 쓰는 것과 동일합니다.

포인터는 자료형에 관계 없이 크기가 동일합니다. 그저 시작하는 주소값만 가지고 있으면 되기 때문이죠. 그래서 어떤 형태의 포인터에서 어떤 형태의 포인터로 형변환하더라도 데이터 손실이 발생하지 않습니다.

injoon2018   2년 전

@djm03178  // 확인이 늦었습니다. 감사합니다 추석 잘 보내세요!

댓글을 작성하려면 로그인해야 합니다.