this isn't a silly question at all, it has a few pitfalls for the unwary.
If you consider your variables boolean, which in C means 0 is false and not 0 is true (usually the value 1 is used, but any other value will do) you'd do:
a = (c || ! b);
Note the parentheses after the = are very important, otherwise you will assign c to a and the result of the expression itself won't be assigned. Also note, the boolean or || is used.
On the other hand, if you want to do bitwise operation on the first bit only, you'd use:
a = (c | ~b) & 1;
The bitwise and & 1 at the end makes sure, that only the result of the last bit is returned and all other bits are set to zero. Note also, that the bitwise or | is used here.
If b and c contain only 0 and 1, the results will be the same. However if you have b = 1 and c =2, the first expression returns true (1), the second returns 0 because only the last bit is taken into consideration.