Когда в условии делаешь объявление с присваиваением - всё работает, когда вокруг этого объявления ставишь еще одни вторые скобки - компилятор ругается.
#include <stdio.h>
int main(void)
{
int i = 5;
if (i == 5) // компилируется норм
printf("i equal five!\n");
if ((i == 5)) // компилируется норм
printf("i equal five! with double parentheses\n");
if (int j = 5) // компилируется норм
printf("j equal five!\n");
if ((int g = 5)) // ошибка компиляции
printf("g equal five!\n");
return 0;
}
Вываливается с ошибкой
janb@janb~: g++ main.cpp
main.cpp: In function 'int main()':
main.cpp:22:7: error: expected primary-expression before 'int'
if ((int g = 1))
^
main.cpp:22:7: error: expected ')' before 'int'
main.cpp:23:28: error: expected ')' before ';' token
printf("j equal five!\n");
^
Compilation exited abnormally with code 1 at Mon Jul 6 13:24:18
Поиграться можно тут