循环移位与算术移位的区别
已经介绍的很详细了,程序中遇到两个问题,一个是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);}新闻热点
疑难解答