&连接两条表达式的话,执行的时候会将两条表达式都算出来,再进行与运算;而&&连接的话,只要第一条表达式为假,则不计算第二条表达式。
可以自己运行以下代码加强理解
在main函数中:
int c,d;
c=2, d=3;
if(c++==5 & d++==6);
printf("%d %d\r\n", c, d);
c=2, d=3;
if(c++==5 && d++==6);
printf("%d %d\r\n", c, d);
因为一个&符号的意义是:位与
所以逻辑与需要与其区分,就增加了一个&
其实这是 C语言形成时 为了规范 IEEE 做出的一个规定
一个&是地址符
加运算为什么要用+符号呢?