Oui, mais sans type booléen ça n'a pas plus de sens.
En C oui, mais ce n'est pas naturel. En langage courant "if x" veut dire "si x est vrai" pas "si x est non-nul". Ou alors il aurait fallu nommer le mot-clé "if_not_null".
Effectivement, d'où le choix retenu.
Et les entiers aussi, car en matière d'arrondi ils font pire. Mais c'est un autre problème.