Stai confondendo ciò che viene considerato vero dalle espressioni condizionali con i valori booleani. L'if/il while/... considerano come vero qualunque cosa che sia diversa da zero*. Tuttavia un bool può assumere solo due valori: true o false (§3.9.1:6).
Values of type bool are either true or false.
true è (un literal) di tipo bool (§2.13:5), e lì viene implicitamente convertito in un int. Come specificato dallo standard (§4.5:4), quando un bool viene convertito in un int false diventa 0 e true diventa 1.
An rvalue of type bool can be converted to an rvalue of type int, with false becoming zero and true becoming one.
È per questo dunque che alla tua variabile intera viene assegnato 1.

Per inciso, non è così che si usa il forum, dato che è una domanda nuova dovresti aprire una discussione nuova.

---
* in effetti ciò che viene messo nelle condizioni degli if/while/for/... viene convertito implicitamente in un bool (§6.4:4), e la condizione viene considerata vera se il risultato della conversione è true; valgono perciò le regole della conversione implicita a bool (§4.12):
An rvalue of arithmetic, enumeration, pointer, or pointer to member type can be converted to an rvalue of type bool. A zero value, null pointer value, or null member pointer value is converted to false any other value is converted to true.