Ответ 1
В этом случае результат будет таким же.
int x{};
является своего рода инициализацией по умолчанию
Не совсем. См. инициализация по умолчанию.
int x{};
инициализация значений (начиная с С++ 11),
Это инициализация, выполняемая при построении переменной с пустым инициализатором.
И эффекты инициализации значения в этом случае (т.е. ни тип класса, ни тип массива):
4), в противном случае объект с нулевой инициализацией.
Наконец, эффекты нулевой инициализации в этом случае:
Если T является скалярным типом, начальное значение объекта является интегралом постоянный нуль, явно преобразованный в T.
С другой стороны, int x = 0;
является инициализация копирования; x
инициализируется значением 0
.
Как упоминал @PaulR, существует разница, что int x{};
поддерживается только из С++ 11, а int x = 0
не имеет такого ограничения.