gpt4 book ai didi

右移运算符对符号类型的编译器依赖性 :

转载 作者:太空宇宙 更新时间:2023-11-04 06:01:46 26 4
gpt4 key购买 nike

在下面的代码中,

#include <stdio.h>
#include<conio.h>
main()
{
int y=-01;
y<<=3;
printf("%d\n",y);
y>>=3;
printf("%d",y);
getch();
}

我在一本书中读到,在 y 上使用右移运算符时,有符号位可能会保留也可能不会保留,具体取决于我的编译器。这是为什么?这背后的概念是什么?请详细说明。

最佳答案

有些处理器只有“无符号”右移(用 0 填充符号位)或有符号右移(用当前符号位的副本填充大小位)。由于某些处理器只有一个或另一个,而不是两个,因此该标准不会尝试强制执行一种行为或另一种行为。

就其值(value)而言,许多(大多数?)当前的处理器都有执行这两项操作的指令。例如,x86 包括 shr​​(逻辑右移——用 0 填充)和 sar(算术右移——用符号位的副本填充)。

关于右移运算符对符号类型的编译器依赖性 :,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18492653/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com