Saltar al contenido

Unario menos en un corto se convierte en un int?

Verificamos profundamente cada una de las noticias de nuestra web con la meta de mostrarte en todo momento la información certera y actual.

Solución:

Lo remito a la sección 7.6.2 de la especificación, que establece:


Para una operación de la forma –x, se aplica una resolución de sobrecarga de operador unario para seleccionar una implementación de operador específica. El operando se convierte al tipo de parámetro del operador seleccionado y el tipo del resultado es el tipo de retorno del operador. Los operadores de negación predefinidos son:

negación entera:

int operator –(int x);
long operator –(long x);

El resultado se calcula restando x de cero. Si el valor de de x es el valor representable más pequeño del tipo de operando (−2^31 para int o −2^63 para long), entonces la negación matemática de x no se puede representar dentro del tipo de operando. Si esto ocurre dentro de un contexto comprobado, se lanza una System.OverflowException; si ocurre dentro de un contexto no verificado, el resultado es el valor del operando y no se informa el desbordamiento. Si el operando del operador de negación es del tipo uint, se convierte al tipo largo y el tipo del resultado es largo. Una excepción es la regla que permite que el valor int −2147483648 (−2^31) se escriba como un literal entero decimal.

Si el operando del operador de negación es de tipo ulong, se produce un error en tiempo de compilación. Una excepción es la regla que permite que el valor largo −9223372036854775808 (−2^63) se escriba como un literal entero decimal.

Negación de punto flotante:

float operator –(float x);
double operator –(double x);

El resultado es el valor de x con su signo invertido. Si x es NaN, el resultado también es NaN.

Negación decimal:

decimal operator –(decimal x);

El resultado se calcula restando x de cero. La negación decimal es equivalente a utilizar el operador menos unario de tipo System.Decimal.


Como puede ver, no hay un operador menos unario definido en shorts; la resolución de sobrecarga elige el de ints porque es el que mejor coincide con todos los operadores unarios menos disponibles.

No existe un operador menos unario que tome un valor corto. En su lugar, la resolución de sobrecarga elige la versión int del operador menos unario y realiza una conversión implícita.

Más adelante puedes encontrar las críticas de otros sys admins, tú asimismo eres capaz dejar el tuyo si lo deseas.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *