~这里是取反的意思:
如果是 4 取反就是 -4
如果是 8 取反就是 -8
做了一个例子:
#include
int main()
{
int i=0;
for(;i<10;)
printf("%d\n",~i++);
return 0;
}
这是执行后的结果
~i 是对i按位取反;~i++,是~和++运算符同时作用于i,二者有相同的运算优先级,但是是从右至左结合,所以等价于~(i++)。
printf("%d\n",~i++);
的意思就是打印i的按位取反值,同时i增加1
运行步骤:
第一步按位取反:~i
第二步打印i的值
第三步:i=i+1
比如假设i为8位无符号数,i=80=(1010000)b,按位取反是10101111,也就是175,那么打印出来的就是175,但是之后内存中的i为80+1=81
~是取反的意思
输出 i 取反后的结果.然后再执行 i = i + 1;
int i = 31;
printf("%d\n", ~i++);
输出结果:
-32
i = 31 二进制为: 0001 1111, 取反后结果: 11111111111111111111111111100000
而%d输出的时候按照有符号输出的,所以结果是上面二进制形式的整数 = -32
00
11
22
33
44
55
66
77