Resultados de la búsqueda a petición "undefined-behavior"

8 la respuesta

¿Una implementación de C ++ que detecta un comportamiento indefinido?

Un gran número de operaciones en C ++ dan como resultado un comportamiento indefinido, donde la especificación es completamente muda sobre cuál debería ser el comportamiento del programa y permite que ocurra cualquier cosa. Debido a esto, hay ...

6 la respuesta

Puedo tratar una matriz 2D como una matriz 1D contigua?

Considere el siguiente código: int a[25][80]; a[0][1234] = 56; int* p = &a[0][0]; p[1234] = 56; ¿La segunda línea invoca un comportamiento indefinido? ¿Qué tal la cuarta línea?

7 la respuesta

Comportamiento indefinido con const_cast

Esperaba que alguien pudiera aclarar exactamente qué se entiende por comportamiento indefinido en C ++. Dada la siguiente definición de clase: class Foo { public: explicit Foo(int Value): m_Int(Value) { } void SetValue(int Value) { m_Int = ...

2 la respuesta

constexpr comportamiento indefinido

He estado experimentando conconstexpr. En mi compilador de prueba (g ++ 4.6) esto no se compila con un error sobre acceso fuera de límites. Es un compiladornecesari para detectar esto en tiempo de compilación? #include <iostream> constexpr ...

8 la respuesta

Macros y postincremento

Aquí hay un comportamiento macro más extraño que esperaba que alguien pudiera arrojar luz: #define MAX(a,b) (a>b?a:b) void main(void) { int a = 3, b=4; printf("%d %d %d\n",a,b,MAX(a++,b++)); } La salida es 4 6 5. El valor de b se incrementa ...

3 la respuesta

Está bien definido / es legal para la colocación, varias veces en la misma dirección?

(Nota: esta pregunta fue motivada al tratar de idear un hacker de preprocesador para generar una asignación no operativa para responder a esta otra pregunta: Macro que acepta nuevo ...

6 la respuesta

¿Por qué el desbordamiento de enteros en x86 con GCC causa un bucle infinito?

El siguiente código entra en un bucle infinito en GCC: #include <iostream> using namespace std; int main(){ int i = 0x10000000; int c = 0; do{ c++; i += i; cout << i << endl; }while (i > 0); cout << c << endl; return 0; } Así que aquí está el ...

1 la respuesta

¿Por qué char * causa un comportamiento indefinido mientras que char [] no lo hace?

Intentar modificar un literal de cadena provoca un comportamiento indefinido: char * p = "wikipedia"; p[0] = 'W'; // undefined behaviourUna forma de evitar esto es definirlo como una matriz en lugar de un puntero: char p[] = "wikipedia"; p[0] ...

10 la respuesta

omportamiento extraño de scanf para int corto

El código es el siguiente #include <stdio.h> main() { int m=123; int n = 1234; short int a; a=~0; if((a>>5)!=a){ printf("Logical Shift\n"); m=0; } else{ printf("Arithmetic Shift\n"); m=1; } scanf("%d",&a); printf("%d\n", m); } después de ...

6 la respuesta

¿En qué enunciado exacto exhibe este programa un comportamiento indefinido según el estándar C ++?

(Soy consciente del hecho de que la dirección / referencia de retorno a una variable local a la función debe evitarse y un programa nunca debe hacer esto). ¿Devuelve una referencia a una variable local / resultado de referencia ...