[C con Clase] Precedencia de operadores

amauri d b_duhart en live.com.mx
Dom Ene 20 02:11:05 CET 2013


¡Hola a todos!
Estoy respondiendo los ejercicios del capítulo 14, pero sigo teniendo problemas con este tema, hasta ahora no logro encontrar el resultado correcto al resolver los primeros 4 incisos.
Me gustaría que alguien me explicara cómo funcionan los operadores de pre/post in(de)cremento, y que me explicaran cuál es el resultado del ejercicio que añado, y por qué.

Ej:
"Dadas las siguientes variables:
int a = 10, b = 100, c = 30, d = 1, e = 54;
int m[10] = {10,20,30,40,50,60,70,80,90,100};
int *p = &m[3], *q = &m[6];
Evaluar, sin usar un compilador, las siguientes expresiones.
Considerar que los resultados de cada una de las expresiones no influyen en las siguientes:
d)  b++ * c-- + *q * m[2] / d;"

Según yo, primero sustituyo *q y m[2] por la precedencia, segundo, realizo las multiplicaciones y divisiones, que no están implicadas con ++ ni con -- (con una mayor precedencia que estas), debido a que los separa una suma.
1. b++ * c-- + 70 * 30 / 1
2. b++ * c-- + 2100
Ahora hago los incrementos, la multiplicación y la suma.
3. 101 * 29 + 2100
4. 2929 + 2100
5. 5029
Pero me dice que el resultado está mal. ?

P.D.
En el ejercicio f, creo hay un error:
"++*p+++*q;"
Explican que es lo mismo que ++*p++ + *q.
1.++*p++ es 40->50, 50+1, 51.
2.51+*q es 51+70=121, pero el resultado que marca correcto es 111.

Gracias, B.Amauri.

  		 	   		  
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20130119/f0555d29/attachment.html>


Más información sobre la lista de distribución Cconclase