Test Foro de elhacker.net SMF 2.1

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).-

#include <stdio.h>

int main(){
int a = 3 + 4 *(8 * (4 - ( 9 + 3) /6)); //67
int b = 4 * 3 * 5 + 8 * 4 * 2 - 5; //119

printf("\n El resultado de 3 + 4 *(8 * (4 - ( 9 + 3) /6)) es...: %d", a);
printf("\n\n El resultado de 4 * 3 * 5 + 8 * 4 * 2 - 5 es........: %d", b);

printf("\n\n");
return 0;
}


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
int b = 4 * 3 * 5 + 8 * 4 * 2 - 5


la parte asociativa agarrará los operadores de mayor prioridad primero

int b = (4 * 3 * 5) + (8 * 4 * 2) - 5

en la primera


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

int a = 3 + (4 *(8 * (4 - ( (9 + 3) /6) ) ) )
o
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
Cita de: 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.

..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 (cpp) [Seleccionar]
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