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

304
Vistas
¿Esta declaración de expresión en una pregunta de examen de programación C tiene un comportamiento indefinido?

En una pregunta del examen de programación C, encontré esto:

 int a, b=0, x=4, y=5; a=((a=x%y?b+1:y--)&&(x-=y))||(y-=6);

¿Es esta expresión UB?

Diría que no, debido al punto de secuencia (SP) entre operadores lógicos y entre expresiones de ?: . Entonces, según tengo entendido, el horrible truco se evaluaría correctamente como:

 x%y this gives 4 (exp is true) a= b+1 this assigns 1 to a and we have a SP (exp is true) y-- this is not evaluated x-=y this assigns -1 to x and we have a SP (exp is true) y-=6 this is not evaluated a= this assigns the result of the || operator to a (1)

Finalmente a=1 , x=-1 , nada más cambia. ¿Cualquier error?

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

¿Esta declaración de expresión en una pregunta de examen de programación C tiene un comportamiento indefinido?

¿Es esta expresión UB?

No.

¿Cualquier error?

No.

Quería escribir un texto aquí, pero ya escribiste la explicación... No tengo nada que hacer. Notas: También hay un punto de secuencia después de ? . Incluso si se evaluara y-- , porque && es un punto de secuencia, estaría bien.

over 4 years ago · Santiago Trujillo Denunciar

0

#include <stdio.h> int main() { int a, b=0, x=4, y=5; a=((a=x%y?b+1:y--)&&(x-=y))||(y-=6); printf("a=%i\nb=%i\nx=%i\ny=%i\n", a,b,x,y); return 0; }

PRODUCCIÓN:

 a=1 b=0 x=-1 y=5

Entonces, creo que tiene razón en todo, pero no creo que cuente como un comportamiento indefinido.

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