En el caso de C/C++, ese "if(4)" no sería un error sintáctico. Podría ser un error semántico, según el contexto, y podría no serlo.
Esa expresión que colocaste, de ser errónea, sería un error semántico.
Esa expresión que colocaste, de ser errónea, sería un error semántico.