首页 > 学院 > 开发设计 > 正文

C语言循环移位-C语言范例宝典50

2019-11-06 07:12:29
字体:
来源:转载
供稿:网友

循环移位与算术移位的区别

C语言移位 宏定义实现移位 已经介绍的很详细了,程序中遇到两个问题,一个是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);}
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表