- Error en la calculadora de Windows
La calculadora de Windows no da la respuesta correcta para la raíz cuadrada (9) -3. La respuesta debería ser 0 pero no da 0 como salida. Vea la siguiente instantánea. Esto es cierto para cualquier otro número. Por ejemplo, la respuesta de sqrt (4) -2 debería ser 0 pero no dará 0 como respuesta. Recuerde que este error existe en todas las versiones de Windows y es posible que vea diferentes resultados en diferentes versiones de Windows. Vea la instantánea:
2. Error en Microsoft Excel 2007
Microsoft Excel 2007 da una respuesta incorrecta para esta operación de multiplicación.
= producto (77.1,850) debe ser 65535, pero la Sra. Excel da 100000 como respuesta incorrecta. Lea esta explicación muy interesante detrás de este error aquí: Explicando el error de Excel. Este error ha sido corregido por las nuevas versiones de MS Office desde MS Office 2010.
Los siguientes errores son interesantes para conocer solo para programadores en la comunidad C ++. Microsoft Visual C ++, clang ++ & g ++ son compiladores de C ++ muy populares y ampliamente utilizados. También tienen algunos errores graves. Es interesante conocerlos.
3) g++
& clang ++ permite crear objetos de una clase abstracta.
Ha escuchado que no se pueden crear objetos de clase abstracta. Si, es correcto. Pero en todas las versiones de g ++ y clang ++ que admiten los estándares C ++ 11 y posteriores C ++, ambos compiladores permiten crear objetos temporales de clase abstracta.
Considere el siguiente programa (vea la demostración en vivo de Coliru Viewer y [Wandbox] 三 へ (へ՞ ਊ՞) へ ハ ッ ハ ッ y error de compilación como se esperaba en el error de clase abstracta de VC ++):
#include
clase A {
público:
UNA() {
printf ("A () \ n"); }
virtual vacío b () const = 0;
};
int main () {
const A & a {};
ab ();
devuelve 0;
}
4. Error en el compilador Microsoft VC ++ 2015
Observé este error hace unos meses. No se llama al constructor de copia cuando el objeto se pasa por valor. El siguiente programa está mal formado y debería fallar en la compilación. g ++ & clang ++ da un error de compilación como se esperaba, pero el compilador MSVC ++ 15 compila este programa con éxito. Omite la llamada para copiar el constructor como parte de la optimización. Pero se debe llamar al constructor de copia cuando el objeto se pasa por valor. Vea el programa de demostración en vivo, C ++ (vc ++) – rextester y error de compilación en g ++ Ideone.com
#include
prueba de clase {
público:
Prueba (int s): x (s) {std :: cout << "Constructor llamado \ n"; }
int getx () const {return x; }
privado:
int x = 99;
Prueba (const Test & t): x (tx)
{std :: cout << "Constructor de copia llamado \ n"; }
};
nulo f (Prueba t) {
std :: cout << t.getx () << '\ n';
}
int main () {
f (999);
}
5) Error en clang++
: (Fuente: Inicializando una matriz dinámica de objetos construibles no predeterminados)
clang ++ no se compila siguiendo el programa C ++ válido. Ver demostración en vivo Coliru Viewer y Coliru Viewer
struct Foo {
Foo (int) {} // sin constructor predeterminado
};
int main () {
Foo * pFoo = nuevo Foo [2] {1,2}; // ¡OK en g ++, falla en clang ++! eliminar [] pFoo;
}
6) Error en g++
:
#include
clase base {
protegido:
static int x;
};
int Base :: x;
clase DerivedA: Public Base {
público:
DerivedA () {
x = 9;
}
};
clase DerivedB: base pública {
público:
DerivadoB () {
std :: cout << DerivedA :: x;
}
};
int main () {
Derivado B b;
}
El programa anterior es válido según el estándar C ++ pero g ++ da un error de compilación. Vea la demostración en vivo Ideone.com y Coliru Viewer. Este programa es muy interesante. Lea mi respuesta aquí para obtener más información al respecto: ¿Se puede acceder al miembro protegido de la clase Derivada desde la clase que no se deriva de ella?