戳到痛处的按位取反~ 和 逻辑取反!

竟然没有仔细想过这个问题,看这本书真的收益匪浅啊,阿弥陀佛,记录下记录下。


上代码,,,

#include 
#include 

int main()
{
    printf("~0      =0x%X,  \t  !0    =0x%X\n", ~0,   !0);
    printf("~1      =0x%X,  \t  !1    =0x%X\n", ~1,   !1);
    printf("~255    =0x%X,  \t  !255  =0x%X\n", ~255, !255);
    return 0;
}
~0      =0xFFFFFFFF,      !0    =0x1
~1      =0xFFFFFFFE,      !1    =0x0
~255    =0xFFFFFF00,      !255  =0x0

Process returned 0 (0x0)   execution time : 0.048 s
Press any key to continue.

所以,很明显了!

~ 是按位取反,
!是逻辑取反。(只有0、1)

另外也可以看到mingw编译器是把按位取反当做32位数据来处理,
逻辑取反当做8位数据处理。

你可能感兴趣的:(编程基础)