In C, zero is false and any other value is true, so that implicit conversion should be safe.
Either true/false or integer is safe.
But HIGH/LOW is not quite so simple. I don't know if Arduino has guaranteed that HIGH will always and forever be 1 and LOW will always and forever be 0. I think they would be absolutely crazy to change that, but...
void setup() {
Serial.begin(115200);
Serial.println("Hi Mom!\n");
int x = 42;
bool y = true;
if (x) Serial.println("x (42) is true");
if (y) Serial.println("y (true) is true");
if (x == y) Serial.println("this does not print");
}
void loop() {
}
It makes comparing logical flags a little tricky? So maybe
bool n = bitRead(y, 1) != 0;
You can also booleanize a variable with !!, but it's not seen so much in the wild. At least I don't see it very often: