Quand tu lances ton programme en double-cliquant sur l'exécutable, il s'ouvre, s'exécute, et dès qu'il n'y a plus d'instruction bloquante, il se ferme.
En gros, si à la fin de ton déroulement, il n'y a pas un getchar() (par exemple), la console se fermera "toute seule" et c'est normal.
Par contre, si tu ouvres toi-même un cmd (démarrer>exécuter>cmd), que tu vas dans ton dossier de travail (avec la commande cd , entre autres), et que tu lances ton programme en l'appelant par son nom ("machin.exe"...), tu verras tout le déroulement et la fenêtre ne se "fermera pas" une fois l'exécution terminée: l'invite de commandes réapparaîtra simplement.
C'est pas un bug. Code::Blocks prend l'initiative d'ajouter une instruction "bloquante" à la fin de l'exécution dans la console, mais si tu n'en as pas mis de ton côté, dès que tu utiliseras le programme sans passer par lui, ça refera la même chose.
Le "Press any key to continue", il est inséré par C::B. Tu peux le désactiver dans les propriétés de ton projet, mais je te déconseille de faire ça, pense juste à mettre une instruction bloquante si tu veux voir les derniers messages affichés dans la console par exemple, juste avant le "return 0;" du main().