通过C ++标准略读我在很多案例中提到了声明:
表达式
X
应该很好。
我对自己说“好吧,直觉上你知道一个结构良好的表达是什么,但是你能否正式解释是什么让C ++表达式成为一个良好的表达式?”。
我搜索了一下,但我没有发现任何可以对此事做出正式解释的内容。所以这是我的问题:
问: C ++中格式良好的表达式的定性特征是什么?
答案 0 :(得分:7)
C ++ Standard没有定义格式良好的表达式,尽管它实际上使用了这个短语。有格式良好的程序
的定义1.3.26 [defns.well.formed] 格式良好的计划 C ++程序根据语法规则,可诊断的语义规则和一个定义规则(3.2)构建。
我想我们可以假设格式良好的表达式是一个表达式,它不会使程序格式错误(在1.3.9中定义为格式不正确)。
答案 1 :(得分:4)
格式良好的表达式必须符合表达式(由标准定义)的语法,并且必须符合语义规则,例如不使用尚未声明的名称,或者不要在同一范围内重新声明具有不同含义的名称。
i = 0
X::i++
上面的表达式在语法上是有效的,但如果i
尚未声明,或const
,或X
不是命名空间或类类型,或X::i
尚未声明,或X::i
不支持后增量,然后它们无法满足格式良好的表达式的语义要求。
问:C ++中格式良好的表达式的定性特征是什么?
请参阅第1至15条。您无法将整个C ++语言简化为简单列表。