Operadores y lógica
Precedencia completa, aritmética, comparaciones, lógica booleana (reglas reales de cortocircuito) y reglas bit a bit exactas.
Toda expresión en Numlex se evalúa con una única gramática estricta de operadores: una sola
escalera de precedencia para aritmética y lógica, valores booleanos reales (sin conversión
a 1/0) y reglas exactas aparte para el trabajo bit a bit.
Esta página es la referencia completa de operadores: precedencia desde if/then/else
hasta los operadores de sufijo, el significado de cada operador, exactamente dónde hay
cortocircuito (&& con el lado izquierdo falso, y en ningún otro sitio) y la tabla de
precedencia para enteros exactos, con desplazamientos comprobados y comportamiento de
desbordamiento.
Precedencia
De menor a mayor:
if … then … else … (right-associative)
or / ||
and / &&
not / !
== !=
< <= > >=
+ − (left)
* × / ÷ (left; `of` after a percent or multiplier is this level)
^ (power, right)
unary + / −
primary (literals, parentheses, calls, % and x postfixes)
Operadores
| Operador | Significado | Notas |
|---|---|---|
+ − | suma / resta | en un contexto aditivo, un porcentaje «puro» a la derecha es una parte del lado izquierdo acumulado: 100 + 10% = 110 |
* × / ÷ | multiplicación / división | 200 × 10% = 20, 200 / 10% = 2000 |
^ | potencia | nunca XOR (XOR es la palabra xor para enteros) |
% (sufijo) | p% = p/100 | «porcentaje» semántico en contexto aditivo |
x (sufijo) | 1.5x = multiplicador 1.5 | solo se reconoce si no hay una variable x activa |
of (infijo, nivel *) | 15% of 490 = 73.5 | el lado izquierdo debe ser un porcentaje o un multiplicador (1.5x): 1.5x of 20 = 30, cadenas 10% of 20% of 50 = 1; 3 of 4 es un error. En las líneas de porcentaje, la base de N% of E es el resto de la línea: 15% of 490 + 5 = 74.25 |
< <= > >= | comparaciones | numéricas; el resultado es booleano |
== != | igualdad / desigualdad | resultado booleano |
and && | conjunción | && cortocircuita solo con el lado izquierdo falso: false && (1/0 > 0) = false; true && … y la palabra and siempre evalúan el operando derecho |
or || | disyunción | no cortocircuita: se evalúan ambos operandos — false or (1/0 > 0) y false || (1/0 > 0) son errores de división por cero |
not ! | negación | prefijo |
if a then b else c | condicional | precedencia más baja; las ramas son expresiones completas; else es obligatorio |
Más sobre las formas de porcentaje y multiplicador en Porcentajes.
Los booleanos son un tipo real
true y false nunca se convierten a 1/0. Mezclar un booleano y un número en un mismo
operador es un error.
Glifos frente a palabras
- Los glifos
&y|son siempre bit a bit: con operandos booleanos son un error (false | (1/0 > 0)→ «Invalid expression»). - Solo las palabras
and/orson contextuales: dos enteros las vuelven bit a bit, dos booleanos las vuelven lógicas.
Enteros exactos y operadores bit a bit
El modo de enteros exactos se activa con:
- Fuerte: literales
0x…/0b…/0o…, las llamadasint(bin(oct(hex(, las frases… as|in <base>/… to base N, los glifos bit a bit&|<<>>y la palabraxor. Los glifos solo cuentan cuando la línea tiene contenido matemático:fish & chipssigue siendo prosa. - Débil: la palabra
and/orcuando ambos lados son enteros.
Precedencia para enteros, de menor a mayor:
if/then/else → || → && → | / or → xor → & / and
→ comparisons == != < <= > >= → shifts << >> → + - → * / % → ^
→ unary → primaries
| Operador | Significado | Notas |
|---|---|---|
& | AND bit a bit | |
| | OR bit a bit | el glifo es siempre bit a bit: los operandos booleanos son un error (false | (1/0 > 0)) |
xor | XOR bit a bit (palabra) | 6 xor 3 = 5 |
<< | desplazamiento a la izquierda | desplazamiento 0…63; el desbordamiento es un error |
>> | desplazamiento a la derecha | desplazamiento 0…63; aritmético para negativos |
/ | división entera | el resultado es un número decimal cuando hay resto |
% | resto | |
^ | potencia | el exponente se comprueba; un exponente negativo produce un número decimal |
Todos los valores aquí son enteros exactos: 0x7FFFFFFFFFFFFFFF = 9223372036854775807.
El desbordamiento es un error visible, nunca un «envolvimiento» ni un número redondeado en
silencio. La división con resto, un exponente negativo y los valores no enteros «salen» de
los enteros exactos, así que usa paréntesis explícitos en las fronteras.
Las formas literales y los nombres de base están en Números y bases enteras.
Relacionado
- Números y bases enteras — literales hexadecimal/binario/ octal y frases.
- Funciones integradas —
powcomparte el contrato de^. - Porcentajes — los patrones de frase estrictos construidos sobre estos operadores.