-1>>2 为什么等于-1
时间: 2023-08-16 07:16:28 浏览: 149
引用\[1\]中的内容解释了链表中指针的移动操作。当执行语句p = p->next时,实际上是将p指向的结点的下一个结点的地址赋值给p。这样就相当于将p节点往后移动了一位。同理,当执行语句p->next = p时,将p指针的地址赋值给p的下一个结点,相当于将p的下一个结点往前移动了一位。
引用\[2\]中的例子进一步说明了结构体指针的使用。当执行语句x = p->a时,取出p所指向的结构体中的数据项a的值赋值给x。因为p指向的是结构体A,所以p->a的值就是A中的a,即1。
根据以上解释,对于问题中的表达式-1>>2,它的结果等于-1。这是因为在C语言中,右移操作符(>>)将操作数的二进制表示向右移动指定的位数,移动过程中最左边的位用符号位填充。对于负数,符号位为1,所以右移操作会保持符号位不变,即负数右移仍然是负数。因此,-1右移2位仍然是-1。
#### 引用[.reference_title]
- *1* *2* *3* [9、用指针处理链表问题(何为p=p->next;何为p->next=p?)](https://blog.csdn.net/qq_41113008/article/details/88677639)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]