ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Пятница
29 ноября
963058 Топик полностью
fk0, легенда (06.12.2019 22:34 - 22:38, просмотров: 394) ответил SciFi на А что буфер? Выполнение последовательное, никто никому не мешает. Выдумки, короче.
Содержимое буфера передаётся в printf не по значению, а по ссылке. В итоге когда функция печатает в тот же буфер, который является одним из аргументов -- аргумент рискует стать бесконечным. Там конечно начинаются ньюансы. Считает ли sprintf внутри https://en.cppreference.com/w/c/language/restrict
длину до копирования, или копирует до нуля через strcpy, насколько длинный первый (он же второй и третий...) аргумент и успевает ли перетереть другие %s, содержит ли сам проценты. Кстати вспоминается, что ключевое слово restrict существует не просто так: "In the following example, the compiler may infer that there is no aliasing of modified objects, and so optimize the loop aggressively..."
[ZX]