¿por qué * ptr ++ actúa como * (ptr ++) y no (* ptr) ++?

Posible duplicado:
++ en un puntero desreferenciado en C?

De manera similar, ¿qué sería * ptr + = 1 * ptr% 8, y * ptr / 8 sería?

Las diferencias parecen confusas. ¿Es esto, quizás, dependiente del comstackdor?

Tiene que ver con la precedencia del operador. El operador * tiene una prioridad más baja que ++ por lo que ocurre en último lugar.

Aquí hay una tabla de Wikipedia que enumera todos los operadores: http://en.wikipedia.org/wiki/Operators_in_C_and_C%2B%2B#Operator_precedence

Puede ver en el gráfico que postfix ++ tiene una precedencia de 2, mientras que * desreferenciación tiene una precedencia de 3. (Los números son ligeramente al revés, ya que los números más bajos tienen mayor precedencia).

Prioridad del operador. El operador ++ “se enlaza más estrechamente” que el operador * .

Aquí está la tabla, en orden de precedencia. http://isthe.com/chongo/tech/comp/c/c-precedence.html

Esto no es dependiente del comstackdor. Siempre se comportará de esta manera.

Debido a la precedencia (así es como funciona C).

Preguntas frecuentes sobre el tema * exacto *

Los operadores postfix ++ y – esencialmente tienen mayor prioridad que los operadores unarios de prefijo. Por lo tanto, * p ++ es equivalente a * (p ++);

debido a la precedencia del operador

El postfix ++ tiene una prioridad más alta que el operador *. No es dependiente del comstackdor.

* ptr + = 1 boostá el valor apuntado por ptr en uno (o llame al operador sobrecargado apropiado) * ptr% 8 calculará el rest del valor apuntado por ptr dividido por 8 * ptr / 8 calculará la división de el valor apuntado por ptr y 8

Este enlace tiene una tabla con las reglas de precedencia del operador para C.

  • Tabla de Precedencia del Operador C

De wikipedia :

Para la norma ISO C 1999, la sección 6.5.6, nota 71, establece que la gramática C proporcionada por la especificación define la precedencia de los operadores C

Esto significa que la precedencia del operador se rige por el estándar C.

Las diferencias parecen confusas. ¿Es esto, quizás, dependiente del comstackdor?

No, la prioridad de los operadores se define en la especificación de c lang. Y así, * prt ++ siempre está deferiendo el puntero antes de que se produzca el incremento posterior.