c语言中的 ^ & | 都分别是什么意思啊

C语言中->是什么意思啊?~

“->”是一个整体,它主要用于指向结构体、C++中的class等含有子数据的指针用来取子数据。
换种说法,如果我们在C语言中定义了一个结构体,然后申明一个指针指向这个结构体,那么我们要用指针取出结构体中的数据,就要用到“->”。
举例:
struct Data
{int a,b,c;}; ——定义结构体
struct Data * p; ——定义结构体指针
struct Data A = {1,2,3}; ——声明变量A
int x; ——声明一个变量x
p = &A ; ——让p指向A
x = p->a; ——取出p所指向的结构体中包含的数据项a赋值给x
由于此时p指向A,因而 p->a == A.a,也就是1。
对于一开始的问题 p = p->next,这应该出现在C语言的链表,这里的next应该是一个与p同类型的结构体指针,其定义格式应该是:
struct Data
{int a;struct Data * next;};
main()
{struct Data * p;
p = p->next;
}

1、C语言中的 >>= 意思为:右移后赋值
代码示例为:
x = 8; x >>= 3;
右移后结果为:00000000 00000000 00000000 00000001

2、C语言中的 <<= 意思为:左移后赋值
代码示例为:
x = 8;
x <<= 3;
左移后赋值结果为:00000000 00000000 00000000 01000000

3、C语言中的 &= 意思为:按位与后赋值
代码示例为:
x = 0x02;
x &= 0x01;
按位与后的结果为:0x00

4、C语言中的 ^= 意思为:按位异或后赋值
代码示例为:
x = 0x02;
x ^= 0x01;
按位异或的结果为:0x03 等同于0011

5、C语言中的 |= 意思为:按位或后赋值
代码示例为:
x = 0x02;
x |= 0x01;
按位或的结果为:0x03 等同于0011



扩展资料:
1、C语言运算符的优先级顺序
运算符的优先级从高到低大致是:单目运算符、算术运算符、关系运算符、逻辑运算符、条件运算符、赋值运算符(=)和逗号运算符。
2、比特右移运算符的位移
比特右移(>>)运算符可以是算术(左端补最高有效位)或是逻辑(左端补 0)位移。例如,将 11100011 右移 3 比特,算术右移后成为 11111100,逻辑右移则为 00011100。因算术比特右移较适于处理带负号整数,所以几乎所有的编译器都是算术比特右移。
参考资料来源:百度百科-C语言

^是异或的意思。他的规则是参加运算的两个二进位同号,则结果为0(假),异号则为1(真)即0^0=0,0^1=1,1^0=0,1^1=0;比如
00111001(57)
(^) 00101010(42)
_______________
00010011(19)
&是与运算,如果两个都是1,则结果是1,否则为0;
00000011 (3)
(^)00000101 (5)
____________________
00000001 (1)
|是或运算符号
两个二进制数中只要有一个是1就为1,也就是除非两个数都是0,才为0
00110000
(|) 00001111
_______________
00111111
上面的数字可能没对准,你对准看就行了,不好对准啊

^ & | 都是位运算符号。
^ 表示 按位异或 例如:1010b | 1110b = 0100b
&表示 按位与。例如:1010b & 1110b =1010b
| 表示 按位或。例如:1010b | 1110b = 1110b

||是或者的意思,&是地址符就是输入的意思

a = 1010 1101 | 0011 0111
a实际结果为 1011 1111
|:或的意思。只要有一个为1,结果就为1

a = 1010 1101 ^ 0011 0111
a的结果为 1001 1010
^:异或。两个比较比特不一样,结果就为1

^ 异或, 二目运算符 a = 1 ^ 2;
& 与,二目运算符 a = 1 & 2;
| 或,二目运算符 a = 1 | 2;

相关兴趣推荐

IT评价网,数码产品家用电器电子设备等点评来自于网友使用感受交流,不对其内容作任何保证

联系反馈
Copyright© IT评价网