是什么编程语言?C还是Verilog?
我暂且假定是C
这几个符号的区别在于作用对象。&是逻辑量按位取与,也就是两个逻辑量一位一位地进行“与”运算。两边操作数的第一位上都是1时,结果的第一位值为1。否则该位值为0,其他位同理。
比如
B00010010&B00100011,按位计算结果为B00000010,
&&则是两个布尔变量(就是只有真和假两种值的变量)的运算,只有两个布尔变量都为“真”时,这个式子的结果才是“1”或者“真”,比如if (a=0 && b=1)就是说只有当a=0且b=1时才符合条件。
同样 | 是逻辑变量的运算,取“或”,|| 则是布尔变量的运算,取“或”
&是位与操作,一定会执行; &&是逻辑与操作,如果&&的前面为false了,后面的就不会执行了。
|是位或操作、一定会执行; || 是逻辑或操作,如果||的前面为true了,||的后面就不会执行了。
a&&b 如果a为true,编译器不知道整个表达式是true还是false所以,必须执行b确定
如果a为false,编译器知道整个结果是false,b就不执行了
a||b 同理,如果a为true ,编译器知道整个表达式是true,就不执行b了,
但是 如果a为false 编译器还要执行,判定最后的结果
& 与运算
| 或运算
这两个 你只要记住 1&1=1 1&0=0 0&0=0 1 | 1=1 1|0=1 0 |0=0 就可以了
...你反了一个严重的错误~~~~~~&和|的值不是blooean的~~~~~~~~而是一个int .....
if()里只接受blooean型的结果 所以
if(a!=null&a.Length>0) {}
if(a!=null | a.Length==0) {}
这些都不能通过编译(如果是C语言的话可以通过编译......因为c语言了if括号的值可以是数组1为真0为假)..
其实你上边的例子我没有测试 不过可能会通过编译 因为有运算符的优先级不过如果这么写的话
if((a!=null )| (a.Length==0)) {}是肯定通不过编译的
&&是“和”、“且”的意思(and)
||是“或”的意思(or)
&、| 是位运算,&位和,|位与