Salve gente, ho scritto un programmino in c++ per capire l'uso delle enumerazioni; eccolo qui:

codice:
#include <iostream>

using namespace std;

int main()
{
	typedef enum colore{giallo, rosso, blu};
	colore c1, c2;
	int choose;
	cout << "Inserisci il colore:\n" << endl;
	cout << "1 - giallo\n2 - rosso\n3 - blu\n";
	cin >> choose;
	do {
		switch(choose){
			case 1:
				c1 = giallo;
				cout << c1 << endl;
				break;
			case 2:
				c1 = rosso;
				cout << c1 << endl;
				break;
			case 3:
				c1 = blu;
				cout << c1 << endl;
				break;
			default: cout << "Selezione errata; riprova\n";
				cin >> choose;
		}
	}while(choose != 1 && choose != 2 && choose != 3);
		
	cout << c1 << endl;
	c2 = c1;
	cout << c2 << endl;
	return 0;
}
Non presenta errori durante la compilazione(0 errori e 0 warning), tuttavia mentre lo eseguo accadono cose strane:

se provo a inserire un valore di choose compreso fra quelli che mando a schermo(1, 2, o 3), il programma mi stampa senza alcun problema i valori di c1 e c2 corrispondenti. Se invece provo a inserire volutamente un dato sbagliato(per esempio 5), il progamma mi invita a ripetere l'operazione, ma al momento dell'inserimento del dato esatto, il debug mi dice che alla riga

codice:
cout << c1 << endl;
sto usando la variabile c1 senza averla definita. Nella fattispecie assegna a c1 l'anormale valore di -85899346. Come posso risolvere questo problema?
La cosa strana è che se inserisco il valore choose esatto al primo tentativo il programma si chiude correttamente, mentre se sbaglio al primo tentativo e azzecco al secondo mi dà errore!