Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: NOB2014 en 4 Abril 2014, 02:55 am



Título: Operadores, Prioridad y asociatividad en lenguaje C.
Publicado por: NOB2014 en 4 Abril 2014, 02:55 am
Hola a todos y que tengan un muy buen día.-
En este caso estoy estudiando operadores, Prioridad y asociatividad y realmente estoy trabado, en el programa, la segunda sentencia logro establecer qué el resultado sea 119 (creo estar en lo correcto).-

Código
  1. #include <stdio.h>
  2.  
  3. int main(){
  4. int a = 3 + 4 *(8 * (4 - ( 9 + 3) /6)); //67
  5. int b = 4 * 3 * 5 + 8 * 4 * 2 - 5; //119
  6.  
  7. printf("\n El resultado de 3 + 4 *(8 * (4 - ( 9 + 3) /6)) es...: %d", a);
  8. printf("\n\n El resultado de 4 * 3 * 5 + 8 * 4 * 2 - 5 es........: %d", b);
  9.  
  10. printf("\n\n");
  11. return 0;
  12. }

 
Citar

  4 * 3 * 5 + 8 * 4 * 2 - 5

 4 * 3 = 12
 12 * 5 = 60

 8 * 4 = 32
 32 * 2 = 64

 64 + 60 = 124

 124 – 5 = 119


Pero la primera ni hay logro plasmar los pasos, bueno espero como siempre que me ayuden a descifrar el enigma que me tiene bastante ocupado.-
Por otro lado, quisiera saber si les parece muy difícil hacer un programa para emular el compilador, o sea, mostrar paso a paso la fórmula para llegar al resultado final, alguien lo hizo alguna vez.-   
   
Saludos.
Daniel


Título: Re: Operadores, Prioridad y asociatividad en lenguaje C.
Publicado por: Eternal Idol en 4 Abril 2014, 03:04 am
3 + 4 * (8 * (4 - ( 9 + 3) /6))

Despeja la X  ;D
3 + 4 * 8 * X = 67


Título: Re: Operadores, Prioridad y asociatividad en lenguaje C.
Publicado por: engel lex en 4 Abril 2014, 03:08 am
Advertencia - mientras estabas escribiendo, una nueva respuesta fue publicada. Probablemente desees revisar tu mensaje.

http://es.wikipedia.org/wiki/Anexo:Operadores_de_C_y_C%2B%2B (http://es.wikipedia.org/wiki/Anexo:Operadores_de_C_y_C%2B%2B)

con respecto a hacer la formula por partes, no, un debug la hará un solo paso

en la segunda
Código:
int b = 4 * 3 * 5 + 8 * 4 * 2 - 5


la parte asociativa agarrará los operadores de mayor prioridad primero

Código:
int b = (4 * 3 * 5) + (8 * 4 * 2) - 5

en la primera


Código:
int a = 3 + 4 *(8 * (4 - ( 9 + 3) /6))
pasa a ser algo como

Código:
int a = 3 + (4 *(8 * (4 - ( (9 + 3) /6) ) ) )
o
Código:
a= (9 + 3) /6
b= 4-a
c= 8*b
d= 4*c
e=3+d
siendo e el resultado


Título: Re: Operadores, Prioridad y asociatividad en lenguaje C.
Publicado por: amchacon en 4 Abril 2014, 12:23 pm
Realmente no es un problema de programación, sigue el mismo orden que las operaciones matemáticas normales.


Título: Re: Operadores, Prioridad y asociatividad en lenguaje C.
Publicado por: leosansan en 4 Abril 2014, 17:46 pm
Realmente no es un problema de programación, sigue el mismo orden que las operaciones matemáticas normales.

..Para las cuales aquí (http://foro.elhacker.net/programacion_cc/iquestporque_este_resutado_matematico-t411379.0.html;msg1931653#msg1931653)tienes una referencia.

En cualquier caso, en la primera expresión tendrías, matemáticamente hablando, un paréntesis de más, sería más bien:


Código
  1. int a = 3 + 4 *8 * (4 - ( 9 + 3) /6); //67

Saludos!.


Título: Re: Operadores, Prioridad y asociatividad en lenguaje C.
Publicado por: NOB2014 en 5 Abril 2014, 04:11 am
Hola.
Muchas gracias a los 4 me han sido de gran ayuda.

Saludos.
Daniel