Preguntas etiquetadas con language-lawyer

Para preguntas sobre las complejidades de las especificaciones formales o autorizadas de los lenguajes y entornos de programación.


4
¿Es posible una referencia nula?
¿Es este código válido (y comportamiento definido)? int &nullReference = *(int*)0; Tanto g ++ y sonido metálico ++ compilación sin ninguna advertencia, incluso cuando se utilizan -Wall, -Wextra, -std=c++98, -pedantic, -Weffc++... Por supuesto, la referencia no es realmente nula, ya que no se puede acceder a ella (significaría desreferenciar un …

8
¿Es "más si" una sola palabra clave?
Soy nuevo en C ++. A menudo veo una declaración condicional como la siguiente: if statement_0; else if statement_1; Pregunta: Sintácticamente , ¿debo tratar else ifcomo una sola palabra clave? ¿O es en realidad una ifdeclaración anidada dentro del exterior elsecomo se muestra a continuación? if statement_0; else if statement_1;


2
¿Este código de la sección 36.3.6 de la cuarta edición del lenguaje de programación C ++ tiene un comportamiento bien definido?
En la sección Operaciones similares a STL del lenguaje de programación C ++ de Bjarne Stroustrup, la cuarta edición, se utiliza el siguiente código como ejemplo de encadenamiento :36.3.6 void f2() { std::string s = "but I have heard it works even if you don't believe in it" ; s.replace(0, …

8
Reparto eficiente sin firmar para evitar el comportamiento definido por la implementación
Quiero definir una función que tome un unsigned intargumento como y devuelva un intmódulo congruente UINT_MAX + 1 al argumento. Un primer intento podría verse así: int unsigned_to_signed(unsigned n) { return static_cast<int>(n); } Pero como sabe cualquier abogado de idiomas, la conversión de valores sin firmar a firmados para valores …









8
¿Se pueden asumir las ramas con comportamiento indefinido inalcanzables y optimizarlas como código muerto?
Considere la siguiente declaración: *((char*)NULL) = 0; //undefined behavior Claramente invoca un comportamiento indefinido. ¿La existencia de tal declaración en un programa dado significa que todo el programa no está definido o que el comportamiento solo se vuelve indefinido una vez que el flujo de control llega a esta declaración? …

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.