c语言中,i = ((i + 3)&(~3))是什么意思

如题所述

-i--就是先进行i--运算,然后再取其负值。

下面是C语言运算符的优先级:

--与负号处于同一优先级,而结合方向是从右到左,所以是先进行i--运算,再取负号。

i--就是把i自减1,但是它的返回值却是i,这就是i--与--i的区别,--i的返回值就是i-1了。


具体看下面一个程序:

#include<stdio.h>
int main(void)
{
int i = 2;
int j = 2;
printf("i的初始值的为%d\n",i);
printf("j的初始值的为%d\n",j);
printf("-i--的值的为%d\n",-i--);
printf("- --j的值的为%d\n",- --j);
printf("i的值的为%d\n",i);
printf("j的值的为%d\n",j);

}

结果为:

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2018-04-13
&和~都是位运算符
所谓位运算是指进行位的运算。
& 按位与
| 按位或
^ 按位异或
~ 取反
<< 左移
>> 右移
i = ((i + 3)&(~3))
3先按位取反,假设均为char型
3的二进制为 0011 按位取反则为 1100
再与(i + 3)的结果按位与
如果i为4的话,则i+3=7 二进制为0111
结果 0111 & 1100 = 0100
所以结果为4本回答被网友采纳
第2个回答  2010-06-04
好果i=7,那,7%2就是余1
如果是5%3,这就是余2
还有一个是"/"
你可能是这两个符号搞混
/这个符号是求模的
例5/3值为1
if(i%2)==2楼主这种写法就不正确!应该是if(i%2==2)
0为假,1为真 if(i%2)表示当i%2为真的时候执行后面的语句!
第3个回答  2018-02-18
C数组中的第S[i]下标的值自加;例如:
int S[5]={1,2,3,4,5};
int C[5]={1,2,3,4,5};
int i=2;
S[i]=3; //S数组里下标为2的值为3
C[S[i]]=4 //C数组里下标为3的值为4
C[S[i]]++等于4+1 //所以得出这行

注意:上面的格式只为好理解,不是正确的代码写法
第4个回答  2010-06-04
这个嘛我来告诉你咯
我刚好学了这个
你知道在程序中0代表假 1代表真
因为i%2的值不是1就是0(这个很重要,就可以用它代表真和假了)
真是因为这种巧合就没有必要写==1之类的了

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网