C中&和&&之间的区别?

What is the difference between & and && in C?

我的老师给了我这个例子:

int a = 8;
int b = 4;
printf("a & b = %d\n", a & b);
printf("a && b = %d\n", a && b);

输出:

a & b = 0;
a && b = 1;

我不确定为什么在一种情况下会返回true,而在另一种情况下会返回false。