C指针和整数—;特定情况下的指针行为 #包括 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); }
有人能解释一下最后一排发生了什么吗?C指针和整数—;特定情况下的指针行为 #包括 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); },c,C,有人能解释一下最后一排发生了什么吗? printf打印2x按位分配50的值,并使用p2指向的指针指向的整数进行运算 或者换句话说,它是按位和ing 50和3。50是二进制00110010,其中3是00000011。它们都有1英寸的唯一位是第二个最低有效位。因此,结果是00000010或2。您认为它有什么作用?这也确实属于你的问题。可能重复的50d&3d=110010b&000011b=10b=2d你能看到50&3=2吗p++递增p以使其指向arr[]的第二个元素。不,是50&(**p2)中的&是
printf
打印2
x
按位分配50
的值,并使用p2
指向的指针指向的整数进行运算
或者换句话说,它是按位和ing 50和3。50是二进制00110010,其中3是00000011。它们都有1英寸的唯一位是第二个最低有效位。因此,结果是00000010或2。您认为它有什么作用?这也确实属于你的问题。可能重复的
50d&3d
=110010b&000011b
=10b
=2d
你能看到50&3=2吗<代码>p++递增p
以使其指向arr[]
的第二个元素。不,是50&(**p2)中的&
是一个按位和运算符。
#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);
}