Hola, muy buenas. Con el fin de investigar un poco sobre la preferencia entre operadores, hice el siguiente programa:
Lo que yo me esperaba es que se ejecutara Mostrar("Centro->") * Mostrar("Derecha->"), y después Mostrar("Izquierda->") más el resultado anterior, ya que el operador * tiene preferencia sobre el +, pero la salida del programa ha sido la siguiente:
Es decir, que ¿en teoría se habría ejecutado primero la suma, y después el producto? No lo entiendo... Si alguien me lo pudiera explicar... Gracias!
PD.: En el compilador he puesto que no optimice el código. Comando usado:
Trabajando con MinGW-w64 desde Windows
Código (cpp) [Seleccionar]
#include <iostream>
int Mostrar(const char *lpszMensaje);
int main() {
//(*(int *)(&(std::cout << "Izquierda->"))) + (*(int *)(&(std::cout << "Centro->"))) * (*(int *)(&(std::cout << "Derecha->")));
Mostrar("Izquierda->") + Mostrar("Centro->") * Mostrar("Derecha->");
std::cin.get();
return 0;
}
inline int Mostrar(const char *lpszMensaje) {
std::cout << lpszMensaje;
return 0;
}
Lo que yo me esperaba es que se ejecutara Mostrar("Centro->") * Mostrar("Derecha->"), y después Mostrar("Izquierda->") más el resultado anterior, ya que el operador * tiene preferencia sobre el +, pero la salida del programa ha sido la siguiente:
Código [Seleccionar]
Izquierda->Centro->Derecha->
Es decir, que ¿en teoría se habría ejecutado primero la suma, y después el producto? No lo entiendo... Si alguien me lo pudiera explicar... Gracias!
PD.: En el compilador he puesto que no optimice el código. Comando usado:
Código [Seleccionar]
g++ -o main.exe main.cpp
Trabajando con MinGW-w64 desde Windows