Вы не можете заключить в скобки декларацию. Таким образом, использование дополнительных скобок вокруг объявления приведет к ошибке.
Что касается первого оператора if, то используется выражение с оператором присваивания. Поэтому компилятор предупреждает, предназначено ли использование присвоения.
Во втором случае есть объявление с инициализатором. Там нет назначения. Значение условия определяется тем, равно ли значение объявленной переменной после инициализации нулю или нет.