考虑64位
#include<stdio.h> int main() { unsigned a=0xffffffff; a=~a; printf("%u\n",a); printf("%x\n",+ + a); return 0; } OUTPUT: 0 0
解决方法
a被解析为一次运算符应用两次,因此值保持不变.
(a)是编译器看到的,在这种情况下只是0