Задать вопрос
@k-morozov

Как хранятся числа в памяти?

Пытаюсь разобраться как хранятся в памяти данные структуры:

#include <stdio.h> 
struct Data {
	short id;
	double val;
};

typedef struct Data Data;

int main() {
	Data myData = {50, 1.2};
	char *ptr = (char *)&myData;

	printf("size struct = %ld\n", sizeof(Data));
	printf("size int = %ld\n", sizeof(int));
	printf("size double = %ld\n", sizeof(double));
	
	printf("%p:\t", ptr);
	for(int i=0; i<sizeof(myData); ++i) {
		printf("%02x ", *(ptr+i) );
	}
	putchar('\n');
	return 0;
}

Получаю такой вывод:

size struct = 16
size int = 4
size double = 8
0x7ffc3eeb9930:	32 00 11 49 02 56 00 00 33 33 33 33 33 33 fffffff3 3f


я понимаю что 32 00 11 49 - это интовское значение - но как его расшифровать, что там 50? аналогично с double, Как в данном выводе понять где выравнивание происходит?
  • Вопрос задан
  • 205 просмотров
Подписаться 1 Простой Комментировать
Ответ пользователя vanyamba-electronics К ответам на вопрос (2)
@vanyamba-electronics
printf("Address of id: %08x\n", &(myData.id));
printf("Address of val: %08x\n", &(myData.val));
Ответ написан
Комментировать