Because the result of a && b is always 0 or 1, I think the interpretation of this would only be unambiguous for the C99 _Bool type. Since this didn't exist at the time C was created, this operator was then not included. And nowadays nobody easily adds another operator to C, since this would have an impact on all existing parsers.