Я использую printf через ассемблерный код. Я отмечаю, что в следующем примере, если я опускаю ожидаемый аргумент, выводится мусор.
.386
.model flat, c
.stack 100h
printf PROTO arg1:Ptr Byte, printlist:VARARG
.data
msg3fmt byte 0Ah,"%s",0Ah,"test output",0Ah,0
.code
main proc
INVOKE printf, ADDR msg3fmt
ret
main endp
end
Мой вопрос - почему? Есть ли заданный адрес памяти, который printf использует, ожидая найти аргумент? Почему что-то печатается вообще, поскольку аргумент не передается?