Как printf работает?

Я просмотрел, но не мог найти достойный ответ.

Я задавался вопросом, как printf работает в случае, если как это:

char arr[2] = {5,6};

printf ("%d%d",arr[0],arr[1]);

Я думал, что printf просто идет через формат и когда это, encouter %d, например, он читает 4 байта из этого, является текущей позицией... однако, это, должна быть причина misconcepition это выше работ отлично.

таким образом, где я неправильно?

6
задан Idan 4 February 2010 в 10:40
поделиться

2 ответа

Вы правы. Но есть продвижение аргумента , которое преобразует (среди прочего) ваш char : s в int : s, когда они используются с функцией «varargs», например ] printf () .

9
ответ дан 10 December 2019 в 00:38
поделиться

Когда вы говорите:

 printf ("%d%d",arr[0],arr[1]);

строка и результат вычисления двух выражений массива помещаются в стек, а printf - называется. printf берет строку из стека и использует в ней средства форматирования% для последовательного доступа к другим аргументам в стеке. Как именно это происходит, зависит, как вы говорите, от фактического значения% - например, % d читает 4 байта, а % f читает 8 (для большинства 32-битных архитектур).

1
ответ дан 10 December 2019 в 00:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: