Píldora TAI CXXIX; Precedencia y Asociatividad de Operadores en C++ y Java

📚 Guía Visual de Operadores, Precedencia y Ejemplos en C++ y Java


🔹 1. Precedencia y Asociatividad de Operadores en C++

NivelOperadorDescripciónAsociatividad
1::Resolución de ámbitoIzq. → Der.
2++ -- () [] -> .Incremento/Decremento postfijo, llamada a función, indexación, acceso por referencia o punteroIzq. → Der.
3++ -- + - ! ~ (type) * & sizeof new deleteIncremento/Decremento prefijo, signos, negación lógica, casteo, desreferencia, dirección, tamaño, gestión de memoriaDer. → Izq.
4->* .*Puntero a miembroIzq. → Der.
5* / %Multiplicación, división, móduloIzq. → Der.
6+ -Suma y restaIzq. → Der.
7<< >>Desplazamiento de bits izq./der.Izq. → Der.
8< <= > >=Comparaciones relacionalesIzq. → Der.
9== !=Igualdad y desigualdadIzq. → Der.
10-12`& ^`AND, XOR, OR a nivel de bits
13-14`&&`
15?:Operador ternarioDer. → Izq.
15`= += -= *= /= %= <<= >>= &= ^==`Asignación y asignaciones compuestas
16throwLanzar excepcionesIzq. → Der.
17,ComaIzq. → Der.

💡 Tip: Los operadores de mayor precedencia se ejecutan primero, y si están en el mismo nivel, la asociatividad decide el orden.


🔹 2. Jerarquía de Operadores en Java

NivelOperador
1[] () {}
2Potencia ^, raíz, módulo %
3* / %
4+ -
5< <= > >=
6== !=
7& ^ | (Bitwise AND, XOR, OR)
8&&
9||
10?: (ternario)
11= += -= *= /= ...

📌 Diferencia clave: En Java, los operadores lógicos (&&, ||) cortocircuitan, mientras que en C++ no siempre.


🔹 3. Operadores Lógicos y Tablas de Verdad

ABA OR BA AND BA XOR B
00000
01101
10101
11110

📍 Usos típicos:

  • OR (|| o |) → Al menos uno verdadero
  • AND (&& o &) → Ambos verdaderos
  • XOR (^) → Verdadero si solo uno lo es

🔹 4. Operadores de Desplazamiento de Bits

  • << → Desplaza a la izquierda (multiplica por potencias de 2)
  • >> → Desplaza a la derecha (divide por potencias de 2, conserva signo)
  • >>> (Java) → Desplazamiento a la derecha sin signo

Ejemplo en C:

int a = 5; // 00000101
printf("%d", a << 1); // 10 (00001010)
printf("%d", a >> 1); // 2 (00000010)

🔹 5. Tipos de Datos en Java y C++

Java (primitivos): byte, short, int, long, float, double, char, boolean
C++ (rangos típicos):

TipoRango aproximado
char-128 a 127
int-2,147,483,648 a 2,147,483,647
float±3.4E-38 a ±3.4E38
double±1.7E-308 a ±1.7E308

🔹 6. Palabras Reservadas en C++

Ejemplos:
auto, bool, class, const, delete, double, for, if, new, private, public, return, switch, try, void, while.

💡 Importante: No se pueden usar como nombres de variables o funciones.


🔹 7. Ejemplos de Bucles en Java y C++

Java:

for (int i = 10, j = 1; i > 0; i--, j++)
System.out.print(i + " ");

C++:

for (int i = 0; i < 4; i++)
for (int j = 0; j < 3; j++)
printf("%d ", (i + 1) * j);

📌 Resumen Visual

  • C++ y Java comparten gran parte de la lógica en operadores, pero difieren en cortocircuito, tipos de datos y sintaxis en ciertos operadores.
  • La precedencia define el orden de evaluación; la asociatividad define la dirección cuando hay empate.
  • Los desplazamientos de bits son muy útiles en optimización y programación de bajo nivel.
  • Las tablas de verdad ayudan a entender el comportamiento lógico sin ejecutar código.

Respuesta

  1. […] Píldora TAI CXXIX; Precedencia y Asociatividad de Operadores en C++ y Java – Anacrolibrum […]

    Me gusta

Deja un comentario