Se pueden utilizar los siguientes pasos para habilitar desbordamiento aritmético/transgresión por debajo de la comprobación en Visual Studio:
- Haga clic derecho sobre el proyecto en el Explorador de soluciones y seleccione Propiedades.
- En la pestaña Generar, haga clic en el botón Avanzado. (Está hacia la parte inferior)
- Marque la casilla de verificación "Comprobar si hay desbordamiento/desbordamiento aritmético".
Esto lanzará un System.OverflowException
cuando se produce el desbordamiento en lugar de su operación habitual de cambiar el valor a un valor mínimo.
Sin desbordamiento aritmético/subdesbordamiento habilitados:
int test = int.MaxValue;
test++;
//Test should now be equal to -2,147,483,648 (int.MinValue)
Con desbordamiento aritmético/subdesbordamiento habilitados:
int test = int.MaxValue;
test++;
//System.OverflowException thrown
Utilizando un bloque verificado:
checked
{
int test = int.MaxValue;
test++;
//System.OverflowException thrown
}
La documentación para comprobar está disponible here. (Gracias a Sasha por recordarme al respecto.)
También puede utilizar la palabra clave 'checked' para envolver una declaración o un conjunto de declaraciones para que se comprueben explícitamente para el desbordamiento aritmético. Establecer la propiedad de todo el proyecto es un poco arriesgado porque a menudo el desbordamiento es una expectativa bastante razonable. –
Tenga en cuenta que esta opción del compilador solo se aplica cuando no hay un contexto explícito 'checked' o' no checked' en el código. Además, afectará al ejecutable resultante, no solo a la depuración en Visual Studio. Consulte aquí para obtener documentación: http://msdn.microsoft.com/en-us/library/h25wtyxf%28v=VS.100%29.aspx – Justin
@Rionmonster y @Sasha: no conocía ninguna de esas dos funciones . Gracias a ambos. –