Because its originally error codes. 0 is "all went well", != 0 is an error code telling you why it failed. I'd guess which then got things added like "programA && programB" as "A went well, so do B and check if B goes well", which kinda gives the logic value true to 0.