~是取反的意思 输出 i 取反后的结果.而后再执行 i = i + 1; int i = 31; printf("%d\n", ~i++); 输出结果: -32 i = 31 二进制为: 0001 1111, 取反后结果: 11111111111111111111111111100000 而%d输出的时候按照有符号输出的,因此结果是上面二进制形式的整数 = -32