同样,会是什么 * ptr + = 1 * ptr%8,和 * ptr / 8 是
差异似乎令人困惑。 这可能是编译器依赖的吗?
答案 0 :(得分:4)
它与运算符优先级有关。 *
运算符的优先级低于++
,因此它最后出现。
这是一张列出所有运营商的维基百科图表:http://en.wikipedia.org/wiki/Operators_in_C_and_C%2B%2B#Operator_precedence
您可以在图表中看到,postfix ++
的优先级为2,而*
取消引用的优先级为3.(数字稍微向后,因为较低的数字具有较高的优先级)。< / p>
答案 1 :(得分:3)
运营商优先权。与++
运算符相比,*
运算符“绑定得更紧密”。
这是表格,按优先顺序排列。 http://isthe.com/chongo/tech/comp/c/c-precedence.html
这不依赖于编译器。它总会以这种方式运作。
答案 2 :(得分:2)
由于优先级(这就是C的工作原理)。
<强> C FAQ on the * exact * subject 强>
后缀++和 - 运算符 基本上有更高的优先权 比前缀一元运算符。 因此,* p ++相当于 *(P ++);
答案 3 :(得分:2)
此链接有一个表格,指向C的运算符优先级规则。
答案 4 :(得分:2)
postfix ++的优先级高于*运算符。它不依赖于编译器。
* ptr + = 1会将ptr指向的值增加1(或调用适当的重载运算符) * ptr%8将计算ptr指向的值的余数除以8 * ptr / 8将计算ptr和8
指向的值的除法答案 5 :(得分:1)
答案 6 :(得分:1)
差异似乎令人困惑。这可能是编译器依赖的吗?
不,运算符的优先级在c lang规范中定义。 等等* prt ++总是在后增量发生之前引用指针。