Preguntas con la etiqueta [language-lawyer]

Lista language-lawyer preguntas

Representación de trampa

3
respuestas
99
votos
19.6k
vistas

¿Qué es una "representación trampa" en C (algunos ejemplos pueden ayudar)? ¿Esto se aplica a C++? Dado este código... float f=3.5; int *pi = (int*)&f; ... y suponiendo que sizeof(int)

Descubrí que si configuramos un elemento a nivel de bloque con height:autoo height: 0~100%sin configurar la altura del padre con un valor explícito, y su hijo a nivel de bloque

Hace un tiempo, alguien con gran reputación aquí en Stack Overflow escribió en un comentario que es necesario emitir un charargumento unsigned charantes de llamar std::touppera y std::tolower(y funciones similares).

¿Cuáles son las implicaciones de las garantías de orden de evaluación votadas en C++17 (P0145) en el código C++ típico? ¿Qué cambia en cosas como las siguientes? i = 1;

Me imagino que todos estamos de acuerdo en que se considera C idiomático acceder a una matriz multidimensional verdadera eliminando la referencia a un puntero (posiblemente desplazado) a su primer

En una publicación de 2008 en su sitio, Herb Sutter afirma lo siguiente: Existe una propuesta activa para reforzar esto aún más en C++ 0x y requerir terminación nula y

Hola a todos, hoy me topé con este fragmento de código y no sé qué sucede exactamente y, más concretamente, en qué orden: Código: #include <iostream> bool foo(double & m)

Estoy tratando de entender las nuevas funciones estandarizadas a nivel de bloque en ES6 leyendo la especificación sin formato. Mi comprensión superficial fue: Las declaraciones de funciones a nivel de

Como sin duda todos sabemos , el estándar ISO C (y creo que también C++, aunque estoy más interesado en el lado C) permite tres representaciones subyacentes de números con

Considere el siguiente código: #include <cctype> #include <functional> #include <iostream> int main() { std::invoke(std::boolalpha, std::cout); // #1 using ctype_func = int(*)(int); char c = std::invoke(static_cast<ctype_func>(std::tolower), 'A'); // #2 std::cout <<

Hasta ahora no encuentro cómo deducir lo siguiente: int* ptr; *ptr = 0; es un comportamiento indefinido. En primer lugar, está 5.3.1/1 que indica que *significa indirección que se convierte

Quizás no soy de este planeta, pero me parecería que debería ser un error de sintaxis lo siguiente: int a[] = {1,2,}; //extra comma in the end Pero no lo

¿Es posible una referencia nula?

4
respuestas
153
votos
175.1k
vistas

¿Es este fragmento de código válido (y comportamiento definido)? int &nullReference = *(int*)0; Tanto g++ como clang++ lo compilan sin previo aviso, incluso cuando se usa -Wall, -Wextra, -std=c++98, -pedantic,

He visto afirmar varias veces que el estándar C++ no permite el siguiente código: int array[5]; int *array_begin = &array[0]; int *array_end = &array[5]; ¿Es &array[5]el código C++ legal en

¿Cuáles son realmente las firmas válidas para la función principal en C? Lo sé: int main(int argc, char *argv[]) ¿Hay otros válidos?