Что касается вопроса Why do I have to specify data type each time in C? и моего предыдущего вопроса how to read memory bytes one by one in hex(so without any format) with printf()размера форматировщик в Е()
Можно ли уточнить ниже вопрос для меня?
int32_t a[3]={21,3,1000031};
char* p1=&a[0]; /* char is 1-bye and &a[0] is 0x0004 for example */
printf("p1 in hex=%x\n",*p1); /* 4 bytes starting from word-aligned address p1 */
printf("(p1+3)=%d",(p1+3)); /* 4 bytes starting from a NON word-aligned address?* line 2 printf */
printf("p1+3=%p",p1+3) /* line 3 print*/
% х и% d ВСЕГДА Телль Printf использовать формат INT, который в моем компьютере является 4 байта? я прав?
(p1 + 3) не является слово выровнен адрес Ox004 + 3 = 0x007, так что же PRINTF() показывают в этом случае? По-другому, какие байты обеспокоены линии 2 Printf?
также,% p formatter (void *) нужен ли 1 байт для чтения (из-за символа) или поскольку мы говорим о указателях, и они всегда принимают 4 байта (одно слово)?
Чтобы подвести итоги,% d% x% p, .. они читают постоянный размер (в зависимости от ПК) из памяти или зависит от размера соответствующих аргументов?
'printf ("% d ", sizeof (int));' расскажет вам, сколько байтов находится в вашей системе. –
Вы должны использовать '% zu' для печати' size_t', а не '% d'. –
@CarlNorum: Полезно знать :) –