为常量语法或语义错误赋值?

Assigning a value to a constant syntax or semantic error?

第二行代码在C++中是语法错误还是语义错误?

 int a = 7;
 3 = a;

在标准的 C++ 上下文无关语法中,我发现这个语句在语法上是有效的。

这不是语法错误,因为语法可以从 assignment-expression (5.17) 派生到 integer_literal

然后是语义错误,如5.17所述:

All require a modifiable lvalue as their left operand and return an lvalue referring to the left operand.

lvalue是语义概念,不是句法概念。