2011-03-16 22 views

回答

5

有很多C表达式是分配给非标识符的;这里有几个例子:

x[1] = 5; 
*f() = 7; 
*p++ = 0; 
a[i].f = a[i].g; 
+0

我怀疑'* f()= 7;'会工作... – assem 2011-03-16 21:03:22

+2

@assem:为什么不呢?一个函数可以返回一个指针。 – 2011-03-16 21:04:07

+0

但它是左值吗? – assem 2011-03-16 21:06:13

0

你从哪里找到“规则”?在语言标准提出的语法(草案n1256,§ 6.5.16)是

 
assignment-expression: 
    conditional-expression 
    unary-expression assignment-operator assignment-expression 

assignment-operator: one of 
    = *= /= %= += -= >= &= ^= |= 

其中一元表达式结果在任何数目的不是简单的标识符制作的(如耶Willcock已示出)。