2 u013080807 u013080807 于 2016.03.03 15:59 提问

C语言中 i_tmp -= (i_tmp >> 4 << 4)什么意思

float f_value = 15.02;
int i_tmp;

time_t t;
srand((unsigned)time(&t));    //初始化随机种子, 否则随机数不随机

i_tmp = rand();
i_tmp -= (i_tmp >> 4 << 4);
f_value += i_tmp;

4个回答

u013080807
u013080807   2016.03.03 16:10

右移四位,然后再左移四位,,

Royal_lr
Royal_lr   Ds   Rxr 2016.03.03 16:50

移位的意思,,,

John_ToStr
John_ToStr   Rxr 2016.03.04 09:44

根据运算符优先级,先执行括号内部的,即就是先右移四位再左移四位, 然后运算-=.

WinsenJiansbomber
WinsenJiansbomber   2016.03.04 10:36

清掉最低4-bit的值,第一个 >>4 表示右移4-bit,最低位的 4-bit 内容丢失,后面的 <<4表示再补回4-bit 的 0.

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
float (pointer)[4]和float pointer[4]的区别
float (*pointer)[4] 数组指针,顾名思义,指向数组的指针,可以跟函数指针一起记 float (*func)(int param1, int param); 这个一个函数指针的例子,指向一个返回值为float,参数为两个int的函数 因此我们推断上面那个是指向float[4]的指针:) float *pointer[4] 指针数组,相当于而二维数组
C语言中a=b=c,a=b==c,a==(b=c),a==(b==c)的简单分析
最近一个同学在看java的代码时问的一个关于C语言的问题,看着其实挺简单的,可是我也是好久没有碰C语言了当时就把我给难住了,后来又分析了一下,现在把它写出来 代码如下 #include main() { int a=4,b=2,c=3; int d=8; printf("%d,%d,%d,%d\n",a=b=c,a=b==c,a==(b=c),a==(b==c)); //system("pa
指针问题:C语言中 int*p[4] 和 int(*p)[4]的区别 等等
指针问题
C语言中i++==1是什么意思?
i++==1 取i的当前值和1比较,并在取i的值后将i值增1++j==3 先将j值增1,然后再将j的新值与3比较。
C语言中 \0 代表什么?
http://baike.baidu.com/link?url=ReWdi1_kisb72fv8kq0YwDMVJyQElISZYKAAzrlF8M5S8OhjNuYKm1Y4Ju7TxaE_gVNgmC59AwCyncg8A_5q_K '\0' 是字符串的结束符,任何字符串之后都会自动加上'\0'。 \0是C++中字符串的结尾标志,存储在字符串的结尾。比如char cha[5
c语言中int *p[4]和 int (*)p[4]区别
1,由于[] 优先级高与*所以int *p[4]它先p[4]是定义数组的形式然后和*结合,*p[4]就是数组指针(一个数组中存放的内容是指针变量) 2,int a[4];(a中有4个元素,每个元素为整型)===》a(*p)    int (*p)[4];((*p)有4个元素,每个元素为整型) 也就是说p所指的对象是有4个整型元素的数组,
C语言系列(四)指针概念的理解
转载请标明出处: http://blog.csdn.net/u011974987/article/details/52270018; 本文出自:【XuHao的博客】 前言最近真的是忙的不可开交,公司一直给安排任务,连学习和写笔记的时间都没有了,落下好几次课的笔记都没有写,所以我抽空把目前的进度给追上来,不然会越落越多。加油吧~(感觉身体都要被掏空了) 指针我们通过指针,可以简化一些 C 编程
C语言学习(四)数组
第七章 数组 7.1一维数组的定义和引用 1.定义方式:类型说明 数组名[常量表达式]; a).例如:intnum[10];表示:定义了一个数组,数组名为num,有10个元素。 b).在定义数组时需要指定数组元素的个数,例如num[10],就表示num数组有10个元素。 c).下标从0开始。 d).常量表达式中可以包含常量或者符号
关于C语言中两个惊叹号(!)的问题
两个!是为了把非0值转换成1,而0值还是0。 因为C语言中,所有非0值都表示真。所以!非0值 = 0,而!0 = 1。所以!!非0值 = 1,而!!0 = 0。例如:i=123 !i=0 !!i=1最后将123转换为1。就是其他数据类型向bool值的转换。 http://rpy000.blog.163.com/blog/static/19610953620121111
c语言:&&和||的关系
&&和||的关系:#include int main(){int i = 0,a=1,b=2,c=3,d=4;//&&每个表达式都要执行,||第一个表达式为真,后面的就不执行了/*i= a++&&++b&&d++;*/i = a++||++b||d++;/*printf("a=%d\nb=%d\nc=%d\nd=%d\n",a,b,c,d);*///2 3 3 5printf("a=%d\nb=%