Disculpen mi ignorancia, por más que he buscado no encuentro porqué tiene que dar este resultado. Simplemente no lo veo lógico (quizás sea porque soy nuevo en c++).
No sean tan duros conmigo, necesito saber porqué me da este resultado miren esto:
#include <stdlib.h>
#include <stdio.h>
#include <iostream>
using namespace std;
int main(){
int a = 5;
int b = 10;
int c = a + b;
int be = c*2;
cout <<be <<endl;
system("pause");
return 0;
}
Efectivamente, esto me da 30. Tal y como lo esperaba, pero pasa algo "EXTRAÑO" para mi cuando lo hago de esta forma:
#include <stdlib.h>
#include <stdio.h>
#include <iostream>
using namespace std;
int main(){
int a = 5;
int b = 10;
int c = a + b * 2;
cout <<c <<endl;
system("pause");
return 0;
}
Ahora, en lugar de darme 30 como lo esperaba, me da 25. Esa es mi duda alguien porfavor que sepa sobre la materia me oriente?
Los operadores en cualquier lenguaje, no solo C++ tienen un orden en caso de no usar ().
Deberías leerte el primer tema de introducción de cualquier libro de programación para aprender que si en las operaciones no pones paréntesis cada operador tiene un orden.
Prueba:
int c = (a + b) * 2;
Ya verás como dá 30...
Gracias.
Eso no es programación, eso son matemáticas de 1º de ESO:
http://www.ditutor.com/numeros_naturales/jerarquia_operaciones.html
Un saludo.
CitarEso no es programación, eso son matemáticas de 1º
No se que sera ESO, (calculo que liceo como se dice por acá). Como dijo Ikillnukes, no tiene nada que ver con programación,. si CoolTesting realizase la misma cuenta sobre un papel tendría el mismo resultado..
PD: o debería jeje
Saludos!
Eso es debido, como ya han dicho todos, a que los operados siguen un orden tanto en matemáticas como en C++ y la mayoría de los lenguajes de programación. En este caso, predomina la multiplicación.
PD: Las librerías stdio.h y stdlib.h me parece que sobran :)