c++中&和&&有什么区别

二者都有“与”的意思,但想知道他们的用法上的不同点
2024-10-29 13:33:51
推荐回答(5个)
回答1:

区别一:意思不同

1、&表示按位与操作。

2、&&表示逻辑与的意思,即为and。

区别二:程序执行的时候不同

1、当运算符&&两边的表达式的结果都为true时,整个运算结果才为true,否则,只要有一方为false,则结果为false。比如 12&&23的结果就是1,12&&-1 的结果是1,123&&0的结果就是0

2、我们通常使用0x0f来与一个整数进行&运算,来获取该整数的最低4个bit位,例如,0x31 & 0x0f的结果为0x01。

区别三:&&还具有短路的功能

如果第一个表达式为false,则不再计算第二个表达式,例如,对于if(str != null && !str.equals(“”))表达式,当str为null时,后面的表达式不会执行,所以不会出现NullPointerException

扩展资料

C++中的算术运算符包括基本的算术运算符和自增、自减运算符。由算术运算符、操作数和括号构成的表达式称为算术表达式。

基本算术运算符有:+(加)、-(减或负号)、*(乘)、/(除)、%(取余)。其中“-”作为负号时为一元运算符,其余都为二元运算符。

这些基本算术运算符的意义与数学中相应符号的意义是一致的。它们之间的相对优先级关系与数学中的也是一致的,即先乘除、后加减,同级运算自左向右进行。使用算术运算符要注意以下几点:

①“%”是取余运算,只能用于整型操作数。表达式a%b的结果为a/b的余数。 “%”的优先级与“/”相同。

②当“/”用于两整型操作数相除时,其结果取商的整数部分,小数部分被自动舍弃。因此,表达式1/2的结果为0,这一点需要特别注意。

⑧C++中的“++” (自增)、 “--” (自减)运算符是使用方便且效率很高的两个运算符,它们都是一元运算符。这两个运算符都有前置和后置两种使用形式

参考资料来源:百度百科—C++

回答2:

c++中&和&&的区别如下:

1、含义上的区别:

&&表示逻辑与的意思,即为and。当运算符两边的表达式的结果都为true时,整个运算结果才为true,否则,只要有一方为false,则结果为false。

比如 12&&23的结果就是1,12&&-1 的结果是1,123&&0的结果就是0。

2、运算规则的区别:

表示按位与。&表示按位与操作,我们通常使用0x0f来与一个整数进行&运算,来获取该整数的最低4个bit位,例如,0x31 & 0x0f的结果为0x01。二进制与运算规则:1&1=1  1&0=0  0&0=0。

3、特殊用法的区别:

&&还具有短路的功能,即如果第一个表达式为false,则不再计算第二个表达式。

例如,对于if(str != null && !str.equals(“”))表达式,当str为null时,后面的表达式不会执行,所以不会出现NullPointerException。

参考资料来源:百度百科-c++运算符

回答3:

C语言采用了短路方式,如果&&前一个为false,直接退出。所以yanganglove的回答不对。
&&和&的不同在于&&是逻辑运算符,前后跟两个表达式,如果两个都为true,整个结果为true。而&是位运算符,按位进行,比如:
3&5
3的二进制为11
5的二进制为101
011
&101
_____
001
(按每位进行与运算)
所以3&5的结果为1。
位运算符还有|(或)、^(异或)、~(取反)等。
&&和||的优先级是相同的,而!优先级比较高。

回答4:

&&是逻辑与 &是按位与 杰物说的对

回答5:

前者是按位与,后者是逻辑与