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.
( 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.
Por curiosidad cual es esa web?
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! ..... !!!!
(http://st.forocoches.com/foro/images/smilies/aaaaa.gif)