Veamos, tengo este código:
Código:
Habiendo compilado el programa en una plataforma de 32 bits no debería poder meter un entero superior a 2147483647 ni inferior a -2147483648 sin producir resultados inesperados. Cierto#include<iostream> using namespace std; int main(){ short b; cin >> b; cout << b << endl; return 0; }
Otro:
Código:
En este sólo puedo meter los valores 0 o 1. Correcto#include<iostream> using namespace std; int main(){ bool b; cin >> b; cout << b << endl; return 0; }
Pero he aquí mi problema:
Código:
Se supone que ahí sólo podría almacenar una cadena de 4 carácteres (de hecho, si intento compilar algo como char b[5] = "qwert"; el compilador no me deja). Pero metiendo los carácteres con cin entran muchos más... ¿por qué?#include<iostream> using namespace std; int main(){ char b[5]; cin >> b; cout << b << endl; return 0; }
¿Alguien podría explicármelo?
Concretamente, el error que recibo al pasarme mucho del supuesto espacio de la variable al introducir texto mediante cin es el siguiente:
Cita:
Pero como dije, tengo que pasarme más de lo que yo me esperaba 9597 [main] prueba 2684 _cygtls::handle_exceptions: Exception: STATUS_ILLEGAL
_INSTRUCTION
108254 [main] prueba 2684 open_stackdumpfile: Dumping stack trace to prueba.exe
.stackdump
347588 [main] prueba 2684 _cygtls::handle_exceptions: Exception: STATUS_ACCESS_
VIOLATION
463187 [main] prueba 2684 _cygtls::handle_exceptions: Error while dumping state
(probably corrupted stack)
_INSTRUCTION
108254 [main] prueba 2684 open_stackdumpfile: Dumping stack trace to prueba.exe
.stackdump
347588 [main] prueba 2684 _cygtls::handle_exceptions: Exception: STATUS_ACCESS_
VIOLATION
463187 [main] prueba 2684 _cygtls::handle_exceptions: Error while dumping state
(probably corrupted stack)