elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Curso de javascript por TickTack


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  (Consulta) Preferencia entre operadores
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: (Consulta) Preferencia entre operadores  (Leído 2,474 veces)
Seyro97

Desconectado Desconectado

Mensajes: 145


Ver Perfil WWW
(Consulta) Preferencia entre operadores
« en: 24 Octubre 2015, 08:39 am »

Hola, muy buenas. Con el fin de investigar un poco sobre la preferencia entre operadores, hice el siguiente programa:

Código
  1. #include <iostream>
  2.  
  3. int Mostrar(const char *lpszMensaje);
  4.  
  5. int main() {
  6.    //(*(int *)(&(std::cout << "Izquierda->"))) + (*(int *)(&(std::cout << "Centro->"))) * (*(int *)(&(std::cout << "Derecha->")));
  7.    Mostrar("Izquierda->") + Mostrar("Centro->") * Mostrar("Derecha->");
  8.  
  9.    std::cin.get();
  10.    return 0;
  11. }
  12.  
  13. inline int Mostrar(const char *lpszMensaje) {
  14.    std::cout << lpszMensaje;
  15.  
  16.    return 0;
  17. }

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:
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:
g++ -o main.exe main.cpp
Trabajando con MinGW-w64 desde Windows


En línea

Carlos Peláez González. visita http://www.taringa.net/EnjoyC para muchos tutoriales!
ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: (Consulta) Preferencia entre operadores
« Respuesta #1 en: 24 Octubre 2015, 12:46 pm »

¿Qué van primero, los paréntesis o las multiplicaciones? Ahí tu respuesta. Las funciones, si bien no son paréntesis, se resuelven primero. Dado que las funciones están en ese orden, en ese orden se llaman.


En línea

Seyro97

Desconectado Desconectado

Mensajes: 145


Ver Perfil WWW
Re: (Consulta) Preferencia entre operadores
« Respuesta #2 en: 25 Octubre 2015, 02:03 am »

Ahh vale. Gracias!
En línea

Carlos Peláez González. visita http://www.taringa.net/EnjoyC para muchos tutoriales!
ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: (Consulta) Preferencia entre operadores
« Respuesta #3 en: 25 Octubre 2015, 14:05 pm »

De todos modos, en caso de operadores booleanos:

Código
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. bool func(string a, bool t){
  6. cout << a;
  7. return t;
  8. }
  9.  
  10. int main(){
  11. (func("A", true) || func("B", true));
  12. cout << endl;
  13. (func("A", false) && func("B", true));
  14. }

Si la condición se cumple (o no se cumple) definitivamente, no se llama al resto de funciones.
En línea

Seyro97

Desconectado Desconectado

Mensajes: 145


Ver Perfil WWW
Re: (Consulta) Preferencia entre operadores
« Respuesta #4 en: 25 Octubre 2015, 20:10 pm »

Claro, tiene todo el sentido xD. Gracias por sus respuestas :D
En línea

Carlos Peláez González. visita http://www.taringa.net/EnjoyC para muchos tutoriales!
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Diferencia entre Battlefield 2 version 1.0 y 1.5.Consulta
Dudas Generales
jackeador 3 5,765 Último mensaje 22 Agosto 2010, 04:23 am
por Silici0
Operadores con bits - consulta
Programación C/C++
HRSLASH 4 2,788 Último mensaje 6 Noviembre 2012, 17:16 pm
por HRSLASH
Enfado entre los operadores por el fin del roaming
Noticias
wolfbcn 1 1,531 Último mensaje 19 Junio 2013, 21:53 pm
por JaNCeR
Consulta entre dos condiciones
Bases de Datos
desdeferrol 0 2,244 Último mensaje 16 Abril 2016, 22:12 pm
por desdeferrol
(Consulta) Operadores logicos en C - And - Or- Negado -etc.
Programación C/C++
palacio29 1 2,600 Último mensaje 25 Julio 2016, 21:51 pm
por class_OpenGL
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines