Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

302
Vistas
Encuentre el mayor valor en C usando desbordamiento y bucle

La tarea es encontrar el mayor valor int con un bucle. Tengo exactamente el mismo código casi en C y en Java. En Java funciona bien, pero en CI obtiene el valor más pequeño y me gustaría saber por qué.

C

 #include <stdio.h> int main() { int i = 0; for (; i+1 > 0; i++) { } printf("%d", i); return 0; }

Java

 public class Java { public static void main(String[] args) { int i = 0; for (; i+1 > 0; i++) { } System.out.println(i); } }
over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Su código parece asumir falsamente que en C, se garantiza que un int se ajustará a un número negativo en el desbordamiento . Esta suposición es incorrecta. Tal desbordamiento de enteros con signo invocará un comportamiento indefinido en C, por lo que no puede confiar en ningún comportamiento específico si deja que eso suceda.

Para encontrar el mayor valor representable de un int , puede usar la macro constante INT_MAX , que se define en limits.h .

Sin embargo, tenga en cuenta que solo el desbordamiento de enteros con signo invoca un comportamiento indefinido en C. En contraste con eso, cuando se usan números sin signo, se garantiza que se ajustarán de una manera bien definida. Por lo tanto, podría encontrar el unsigned int representable más grande utilizando su método.

Además, algunos compiladores tienen una configuración que hará que el comportamiento del desbordamiento de enteros con signo quede bien definido (suponiendo que su hardware lo admita y use el complemento a dos para representar números con signo, que es probablemente el caso). En gcc y clang, puede usar la opción de línea de comandos del compilador -fwrapv para lograr esto.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda