(no subject)
В очередной раз обнаружилось "слепое пятно" в ежедневных инструментах. (В прошлый раз с malloc, а сейчас сам язык C.)
Всегда думал, что:
и:
ведут себя по-разному, и вторая обнуляет только первый байт. Вчера коллега указала, что богомерзкий ChatGPT ей сказал, что оба обнуляют все байты. Пришлось проверять в генерируемом ассемблере. (Таки да, все байты.) В стандарте напрямую не сказано о подобном случае, но это следует из совокупности двух параграфов...
Осталось понять, как в C в строке декларации/инициализации буфера обнулить только один байт. (Не отдельным присваиванием.) Чтоб сохранить стиль и и не размавывать локацию изменений во многих местах.
Всегда думал, что:
char buf[4096] = {0};
и:
char buf[4096] = "";
ведут себя по-разному, и вторая обнуляет только первый байт. Вчера коллега указала, что богомерзкий ChatGPT ей сказал, что оба обнуляют все байты. Пришлось проверять в генерируемом ассемблере. (Таки да, все байты.) В стандарте напрямую не сказано о подобном случае, но это следует из совокупности двух параграфов...
Осталось понять, как в C в строке декларации/инициализации буфера обнулить только один байт. (Не отдельным присваиванием.) Чтоб сохранить стиль и и не размавывать локацию изменений во многих местах.
