Ответ 1
Неважно, что они печатают 0
.
Для a1
для начала инициализация плохо сформирована. Для a2
вы привязываете ссылку на временное, чтобы в итоге вы обменивались ссылкой. Нет никакого значения для 0
- это любая память мусора, на которую ссылается ссылка на эту точку. Когда вы нарушаете предварительные условия, программа работает undefined.
Undefined поведение undefined. Нет никаких оснований ожидать определенного поведения для печати. Например, gcc 7 печатает 32764, а clang 4 - 32765. Почему? Почему нет.