¿Porqué este resutado matemático?

Iniciado por CoolTesting, 26 Marzo 2014, 08:07 AM

0 Miembros y 1 Visitante están viendo este tema.

CoolTesting

Muy buenos dias, bueno estuve en una página en la cual te hacian un test para ver si sabes sobre el lenguage <b> C </b> y saqué 8 respuestas correctas de 18 xD, bueno ese no es el rollo, me explico.

Lo que pasa es que en una de esas preguntas me apareció este código:

#include <stdio.h>
#include <conio.h>
int main(){
int a, b, c;
     a = 5;
     b = 1;
     c = ( a + 5 * 2 ) * ( b + 6 / 2 ) + ( a * 2 );
     printf( "%i", c );
     getch();
     
     
}


y Me preguntaba que cual era el resultado, yo simplemente dije que el resultado es <b> 36 </b>

¿Porqué?
Bueno, ahí dice que a es igual a 5 y b es igual a 1..

Entonces.
( 5 + 5 * 2 ) * ( 1 + 6 / 2 ) + ( 5 * 2 ) = 36.

¿Porqué en la respuesta del el test me dijo que el resultado es 70, y no tanto eso. Yo tambien lo probé en el compilador dev c++ porque pensé que era algún error de la página (Ahora veo que el que está en el error soy yo xD) y bueno efectivamente me dió el resultado 70, alguien me puede explicar? No soy experto en la materia, si no hubiese sabido porqué da 70, muchisimas gracias por adelantado.
El ganador es el que sabe perder.

eferion

( a + 5 * 2 ) * ( b + 6 / 2 ) + ( a * 2 )
( a + 10 ) * ( b + 3 ) * ( a * 2 )
( 5 + 10 ) * ( 1 + 3 ) * ( 5 * 2 )
15 * 4 + 10
60 + 10
70

Los operadores de multiplicación y división SIEMPRE tienen prioridad sobre los de suma y resta... son matemáticas básicas.

da8332


leosansan


Completando a eferion, el orden de prioridad lo podemos resumir en:

* paréntesis, llaves, corchetes (estos dos últimos en Mates).

* potencias y raíces.

* multiplicaciones y divisiones.

* sumas y restas.

* Si existen funciones se les aplica el orden de prioridades anterior.

* Y se opera de izquierda a derecha.

Lo último no tiene nada que ver con la propiedad conmutativa sino con:

* de izquierda a derecha:

   ** 6/2: 6 dividido por 2 correcto.
   ** 6^2: 6 elevado a 2. correcto.

* de derecha a  izquierda:

   ** 6/2: 2 dividido por 6. incorrecto.
   ** 6^2: 2 elevado a 6. incorrecto.


¡¡¡¡ Saluditos! ..... !!!!