Разницу видно сразу Во втором примере
"66" - это ASCIIZ строка из 3 символов. Ноль в конце, это признак конца строки, который
sprintf() успешно подставляет в %s.
В первом примере:
А sprintf ( tmp, "%d", DEEP) может дать на выходе непредвиденный результат.
Например число 100000, не будет иметь нолик в конце. Второй sprintf() будет "тянуть" строку в выходной юуфер до появления нуля.
Даже если DEEP имеет формат short, то значение "-32767" займет весь буфер и места для нуля не будет.
Рекомендую:
1) Буфер увеличить;
2) Вместо цепочки присвоений использовать memset()/