c语言中&的意思

c语言中&的意思
最新回答
元亦夏

2022-01-06 00:53:33

在C语言中,& 有两种主要含义:位与运算符和取地址运算符。

位与运算符
  • 作用:对两个操作数的二进制位进行逐位“与”运算,只有对应位均为1时,结果位才为1,否则为0。
  • 示例:计算 3 & 5,3的二进制是 011,5的二进制是 101,逐位进行“与”运算后结果为 001,即十进制的1。
  • 特点:它是双目运算符,会对操作数的所有位都进行计算,不存在短路特性。
取地址运算符
  • 作用:用于获取变量的内存地址,在指针操作中经常会用到。
  • 示例:int a = 5; int *p = &a; 这里的 &a 就是取变量 a 的地址,然后将这个地址赋值给指针变量 p。
与 && 的区别

& 是位运算符或者取地址符,而 && 是逻辑与运算符。&& 具有短路求值的特性,即当左边的表达式为假时,右边的表达式不会再进行计算;而 & 作为位运算符时,无论左边结果如何,右边的表达式都会执行。例如在 (a > 0) && (b++ > 0) 中,若 a <= 0,b++ 不会执行;但在 (a > 0) & (b++ > 0) 里,b++ 会执行。逻辑运算符主要用于条件判断,位运算符用于二进制位操作,使用时要注意区分不同的场景。