Do "initialized" and "unitiailized" in the quote mean explicitly or implicitly or either?
«Инициализировано» означает, что переменной присваивается явное значение (, которое может быть равно нулю )вместе с ее объявлением в коде. «Неинициализированная» означает, что переменная не инициализируется явно во время объявления,что в вашей терминологии соответствует «неявно инициализированному»; если это глобальная переменная, ее значение равно нулю.
If a global or static C variable is not explicitly initialized, but implicitly initialized, is it in.data or.bss section?
Согласно вашей цитате:
.bss Uninitialized global and static C variables
Далее:
Does it matter whether the global or static C variable is implicitly initialized to zero or nonzero?
Неинициализированные глобальные переменные по умолчанию имеют нулевое -значение.
So if a global or static C variable is initialized to zero, should it be in.data or.bss section?
По вашей цитате:
.bss Uninitialized global and static C variables, along with any global or static variables that are initialized to zero.
Обратите внимание, что ничто из этого не является требованием ; в частности, предполагается, что неинициализированные сегменты данных инициализируются значениями, соответствующими нулю в C на платформе. Обычно это имеет место в системах, использующих ELF, но C позволяет представить нуль битовой комбинацией, отличной от всех нулей.
Однако на практике глобальные или статические переменные, инициализированные нулем, явно или нет, являются частью .bss
в двоичных файлах ELF.