Причина, по которой ваш оператор print не выполняется, состоит в том, что ваш логический тип неявно преобразуется в число, а не наоборот. То есть Ваше утверждение if эквивалентно этому: if (1 == a)
Вы можете обойти это, сначала явно преобразовав его в логическое значение:
main(){
int a = 10;
if (((bool)a) == true)
cout<<"I am definitely getting executed";
}
В C / C ++ значение false представлено как 0.
Все остальное представлено как ненулевое. Это иногда 1, иногда что-нибудь еще.
Поэтому вы никогда не должны проверять на равенство (==) с чем-то, что является правдой.
Вместо этого вы должны проверить на равенство чему-то, что является ложным. Так как false имеет только 1 допустимое значение.
Здесь мы тестируем все не ложные значения, подойдет любое из них:
main(){
int a = 10;
if (a)
cout<<"I am definitely getting executed";
}
И третий пример только для того, чтобы доказать, что безопасно сравнивать любое целое число, которое считается ложным, с ложным (равным только 0):
main(){
int a = 0;
if (0 == false)
cout<<"I am definitely getting executed";
}