的执行我很困惑运算符优先级表的让步http://www.difranco.net/compsci/C_Operator_Precedence_Table.htm令运营商
我的意思是从右到左,左到右。
我想知道我们在这个代码上应用的操作符的顺序。
int main()
{
int i[] = {3, 5};
int *p = i;
int j = --*p++;
printf("j = %d\n\n", j);
system("pause");
return 0;
}
它是否像--(*(p++))
?或(--(*p))++
?它非常混乱。有没有解决这个问题的标准规则。
你应该问的问题是为什么你甚至正在考虑编写这样的代码。你喜欢痛苦吗? –
我同意David的观点,一旦你了解了基本知识,如果你必须阅读文档/写一个测试/询问SO,可能你的表情很复杂,或者很可能不像预期的那样表现或者你的同事会有阅读文件/写一个测试/要求SO了解它(或两个选项)。代码行是免费的,只是让你的表达更长。 – SJuan76
**注意**:表达式'( - (* p))++'(等效于' - (* p)++')将是一个**编译时间错误**:不是一个左值'。为了理解它:[为什么'++ i ++'在C中给出“需要L值的错误”](http://stackoverflow.com/questions/17850851/why-i-gives-l-value-required-error -in-c/17850934#17850934) –