¿Cuál es el código C ++ más corto y bien formado que exhibe un comportamiento indefinido?
code-challenge
c++
Luchian Grigore
fuente
fuente
Respuestas:
Editar: esto es diagnosticable, así que no UB.
Aquí
^L
está el carácter de fuente de formulario, que es parte del conjunto de caracteres básico. 4 caracteres (no se requiere una nueva línea por 2.2: 2). El comportamiento indefinido es porfuente
Tiene ocho caracteres y tiene un comportamiento indefinido, según §2.2 / 1.
fuente
main
.main
. Es difícil hacer cumplir las reglas cuando solicitas un programa que no tiene reglas que seguir (¡eso es lo que significa UB!).main
lo que tienes está mal formado.§16.2 / 4:
fuente
Explicación:
C ++ 98 y C ++ 11 §5.8 / 1 afirman que
fuente
int
típicamente de 32? cambiar el RHS del cambio a-1
es el mismo número de caracteres y no dependerá de los tamaños de los números enterosSi uno debe creer en Wikipedia, aquí hay algunos:
Se dice que modificar cadenas provoca un comportamiento indefinido. Siempre me ha funcionado.
Una función no nula sin retorno produce valores de retorno indefinidos.
La división (de int?) Por cero está supuestamente indefinida. Todo lo que sé es que se bloquea.
fuente
int main(){}
mínimo.char **
nochar *
. Simplemente está modificando parte de un valor de puntero. De hecho,argv
se garantiza que se puede modificar de forma segura.char *argv[]
no tener ningúnconst
calificador. Podría bloquearse escribiendo en un literal de cadena conint main(){char *v="";*v=1;}
fuente