maybe logical operators bind differently in C