已经介绍的很详细了,程序中遇到两个问题,一个是scanf与scanf_s的区别,貌似是VS为防止溢出,参见:
修改scanf设置
还有注意便是int类型所占的字节数在Turbo C和VS编辑器是不一样的。
也跟使用系统的位数有关X8or,X64;
具体占用,可用sizeof()命令打出来看,我是没记住,只记得字符是占一个字节的。
unsigned int right(unsigned value, unsigned int n) //循环右移
{
unsigned z;
z = (value >> n) | (value << (8*sizeof(value) - n));
/*z = (value >> n) ;*/
printf("sizeof(value)=%d\n", sizeof(value));
return (z);
}
unsigned int left(unsigned value, int n) //循环左移
{
unsigned z;
z = (value << n) | (value >> (32 - n));
return (z);
}
void main()
{
/*int a = 45;
int b = 30;
int c = 0;
c=gbs(b, a);
printf("%d\n", c);*/
unsigned a;
int n;
printf("please input a number:\n");
scanf("%d", &a);
printf("pleased input the number of displacement:\n");
scanf("%d", &n);
if (n > 0) {
right(a, n);
printf("the result is :%d\n", right(a, n));
}
else {
n = -n;
left(a, n);
printf("the result is :%d\n", left(a, n));
}
while(1);
}