C指针和整数 - 在某种情况下的指针行为

时间:2017-05-10 22:26:26

标签: c

#include <stdio.h>

int main() {

    int arr [6] = {22,3,30,1};
    int * p = arr ;
    p++;
    int ** p2 = &p;
    int x = 50 &(** p2 );
    printf("\n\n%d\n\n", x);
}

有人可以解释最后一排发生的事情吗? printf打印2

1 个答案:

答案 0 :(得分:2)

x按位{ - 1}}分配值{ - 1}与50指向的指针指向的整数。

或者换句话说,它是按位50和3. 50在二进制00110010中,其中3是00000011.它们都具有1 in的唯一位是次要最小值。因此,结果是00000010或2。