Quello che dici non è errato. Solo voglio farti notare una cosa: secondo te il compilatore o l'interpreter come lo tiene salvato il valore true a run-time? come una stringa? non credo proprio... io penso proprio che un valore booleano venga memorizzato come un intero (anche se basterebbe un singolo bit!). Quindi non è detto che se metto 1 invece di true faccio una cosa inesatta o inutile.
Poi ti ricordo che in linguaggi fortemente tipizzati non è sempre impossibile fare assegnamenti "strani": in C ad esempio puoi confrontare un carattere (char) con un intero (int), infatti se fai c=0; (dove la variabile c è un char) non ottieni un errore ma assegni il carattere 'a' (perchè il compilatore implementa i char con gli interi)
![]()