Значение мусора не назначено , скорее оно уже существует. Когда вы выделяете переменную, вы резервируете часть памяти - до тех пор, пока вы не перезапишите ее, эта память будет содержать любую «случайную» информацию, существовавшую ранее.
В качестве метафоры подумайте о выделении переменной, например, о покупке участка земли - пока вы не сделаете что-то с ним (например, не построите дом), на земле будет только тот мусор, который там уже находился (например, старый разрушающийся дом).
Некоторые языки автоматически заполняют вновь назначенные переменные нулями - на это нужно время. В более «самодельных» языках, таких как C, это дополнительное поведение не гарантируется (хотя в некоторых системах память очищается независимо от языка, например, в качестве меры безопасности)