El resultado impredecible de compilar o ejecutar un programa que infringe las reglas del lenguaje que ni el compilador, el intérprete ni el sistema de tiempo de ejecución deben imponer.

undefined-behavior...

Ok, he terminado de pelear por hoy. Por favor ayuda. Tratando de escribir mi primera aplicación. Decidí usar MERN stack y estoy teniendo problemas para conectar el frontend y el backend. El backend funciona bien, recibo datos en Postman. Código y explicación a continuación, tenga en cuenta que este ....
12 may. 2020 a las 02:17
Teniendo esto: #include <stdio.h> #include <stdlib.h> struct Test { char c; } foo; int main (void) { struct Test **ar; ar=malloc(16); *(ar+1) = &foo; ar[1]->c = 'c'; //this work (*(*ar+1)).c = 'c'; //this does't work return 0; } //(**(ar+1)).c='c'; --> first case ¿Por q....
Quiero escribir una función que ingrese una matriz de datos y genere otra matriz de datos utilizando punteros. Me pregunto cuál es el resultado si tanto src como dst apuntan a la misma dirección porque sé que el compilador puede optimizar para const. ¿Es un comportamiento indefinido? (Etiqueté C y C....
13 mar. 2020 a las 12:41
En el siguiente código de ejemplo, ¿hay algún comportamiento indefinido o definido por la implementación? ¿Puedo asignar un valor a un miembro de un sindicato y leerlo de otro? #include <stdio.h> #include <stdint.h> struct POINT { union { float Position[3]; struct { float X,....
8 mar. 2020 a las 19:53
Traté de intercambiar sin una plantilla y me encontré con esto. ¿Son a+=k y a=a+b diferentes? ¿Qué está mal para el primer caso? a += b-(b=a); // this print same value of two a and b. a = a + b-(b=a); // this thing correctly swapped values. ....
8 mar. 2020 a las 18:27
Estoy teniendo el siguiente código: #include <string> #include <cstdio> std::string name = "Ternary Return Test"; std::string *pname = &name; const std::string &getName () { return pname ? *pname : "(unnamed)"; } int main (int argc, char *argv[]) { const std::string &str = getName(); ....
24 feb. 2020 a las 17:40
¿Es válido copiar una estructura cuyos miembros no están inicializados? Sospecho que es un comportamiento indefinido, pero si es así, hace que dejar miembros no inicializados en una estructura (incluso si esos miembros nunca se usan directamente) sea bastante peligroso. Entonces me pregunto si hay a....
El siguiente código produce cosas extrañas en mi sistema: #include <stdio.h> void f (int x) { int y = x + x; int v = !y; if (x == (1 << 31)) printf ("y: %d, !y: %d\n", y, !y); } int main () { f (1 << 31); return 0; } Compilado con -O1, imprime y: 0, !y: 0. Ahora, más allá del hecho ....
Estoy tratando de entender dónde está la línea entre una carrera de datos y una carrera sin fecha y cuáles son las consecuencias sobre el comportamiento indefinido. Considere este ejemplo: #include <chrono> #include <thread> #include <cstdlib> #include <iostream> #include <ctime> #include <functiona....
17 ene. 2020 a las 12:11
Relación comercial con otra pregunta SO, me preguntaba si el siguiente código tiene un comportamiento indefinido: if (str.equals(str = getAnotherString())) { // [...] } Tiendo a pensar que la referencia str a partir de la cual se realiza la llamada equals() se evalúa antes de la siguiente asign....
En K&R (The C Programming Language 2nd Edition) capítulo 5 leí lo siguiente: Primero, los punteros pueden compararse bajo ciertas circunstancias. Si p y q apuntan a miembros de la misma matriz, entonces funcionan relaciones como ==, !=, <, >=, etc. correctamente. Lo que parece implicar que solo se p....
29 dic. 2019 a las 05:01
Me pregunto sobre el uso de código como el siguiente int result = 0; int factor = 1; for (...) { result = ... factor *= 10; } return result; Si el ciclo se repite más de n veces, entonces factor se multiplica por 10 exactamente n veces. Sin embargo, factor solo se usa después de haber sido ....
29 nov. 2019 a las 16:10
Sé que esta pregunta se hace a menudo en su versión de "i = i ++ +1" en la que aparece dos veces, pero mi pregunta difiere en que es específicamente SOLO sobre el lado derecho de esta expresión, cuya definición no es obvia a mi. Solo me refiero a: i++ + 1; Cppreference.com declara aquí que: 2) Los ....
13 nov. 2019 a las 04:45
El siguiente fragmento, por supuesto, no es una buena idea: char *vram = (char*)0xB8000; memset(vram, 32, 0x18000); Tampoco es esto: volatile char *LCDC = (volatile char*)0xFF40; char LCDCshadow = *LCDC; Y lo siguiente es claramente Comportamiento indefinido: int *dontdoit = 0; *dontdoit; Porque ....
12 nov. 2019 a las 05:27
No puedo entender por qué char *ptr = new char[7] no truncaría una entrada de datos de más de 7 caracteres. También por qué eighter char c[7] me permitiría ingresar más de 6 caracteres (pero da error al atribuirle un valor literal de más de 6 caracteres). Hacerlo con malloc function parece un poco d....
7 nov. 2019 a las 15:14
AFAIK, aunque no podemos crear una matriz de memoria estática de tamaño 0, pero podemos hacerlo con las dinámicas: int a[0]{}; // Compile-time error int* p = new int[0]; // Is well-defined Como he leído, p actúa como un elemento del pasado. Puedo imprimir la dirección a la que apunta p. if(p) c....
4 nov. 2019 a las 00:55
¿Está bien el siguiente (ejemplo artificial) o es un comportamiento indefinido: // undefined behavior? const auto& c = SomeClass{}; // use c in code later const auto& v = c.GetSomeVariable(); ....
31 oct. 2019 a las 20:40
El siguiente código hace todo lo que necesito de él en cada compilador de C ++ 11 y posterior que he probado. Entonces, en la práctica, para mis propósitos, funciona (y se espera que funcione, al menos en Linux, en el futuro previsible, por razones históricas). Sin embargo, desde la perspectiva de u....
25 oct. 2019 a las 22:32
La explicación detallada para la undefined-behaviour la etiqueta comienza de manera muy razonable: En la programación de computadoras, el comportamiento indefinido (informalmente "UB") se refiere al código de computadora cuyo comportamiento no está especificado por el estándar del lenguaje de progra....
Supongamos que uno tiene un código similar al siguiente: struct Container1 { int data; }; typedef int Container2; int main () { // code that does stuff but never // utilizes any of the 'Container' // types. } En este ejemplo, ni Container1 ni Container2 se están utilizando. Debo aclar....
10 oct. 2019 a las 09:32
Mientras buscaba una forma de combinar sizeof(double) char s en un double, leí en varias publicaciones que el uso de std::memcpy era la forma recomendada: char bytes[sizeof(double)]; // fill array double d; std::memcpy(&d, bytes, sizeof(double)); Sin embargo, me pregunto por qué el uso posterior de....
3 oct. 2019 a las 00:55
Estoy tratando de entender las conversiones implícitas de tipos de datos en C. Pensé que había entendido este tema, pero el siguiente ejemplo de código todavía me confunde. Específicamente, he leído sobre conversiones aritméticas usuales y promoción de enteros previamente de borradores del Estándar ....
Digamos que voy a compilar un código fuente de C ++ mal escrito que invoca un comportamiento indefinido, y por lo tanto (como dicen) "cualquier cosa puede pasar". Desde la perspectiva de lo que la especificación del lenguaje C ++ considera aceptable en un compilador "conforme", ¿hace "algo" en este ....
26 ago. 2019 a las 09:30
Digamos que tengo este código que copia un bloque de memoria a otro en un orden determinado según su ubicación: void *my_memmove(void *dest, const void *src, size_t len) { const unsigned char *s = (const unsigned char *)src; unsigned char *d = (unsigned char *)dest; if(dest < src) {....
24 ago. 2019 a las 19:48
Jugué con los punteros de matriz de retorno para obtener una mejor comprensión de cómo funcionan y encontré algo que no puedo explicar. ¿Por qué funciona el siguiente código cada vez que itero a través de la matriz de retorno antes de devolverlo realmente (consulte la sección condicional)? ¿Es porq....
8 ago. 2019 a las 17:55