Tengo el siguiente código:comportamiento advertencia extraño con gcc y firmados/comparaciones sin firmar
unsigned int a;
if (a > numeric_limits<int>::max())
do_stuff();
Al compilar, gcc se queja de
advertencia: "la comparación entre el signo y sin signo"
OK, entiendo
Pero, con el siguiente código:
unsigned int a;
if (a > (numeric_limits<int>::max()))
do_stuff();
La advertencia ya no se muestra y realmente no sé por qué ... ¿Hay alguna razón lógica para tal comportamiento o estoy haciendo algo mal ?!
Intentó [simular este comportamiento] (http: // www. ideone.com/5NZL9). Pero muestra advertencia. – iammilind
¿Cuál es el código que lo rodea? – quasiverse
La parte do_stuff() solo consiste en lanzar una excepción. No hay un código que lo rodee ya que son las únicas líneas dentro de una función. Sin embargo, la función se usa en un proyecto grande. Probé el código proporcionado por iammilind pero la advertencia no aparece. Estas son las opciones de gcc que utilizo para compilar el programa '-Wall -ansi -pedantic -Wno-long-long' – malamioute