图一真值表
看看实例代码int avcodec_is_open(AVCodecContext *s){
return !!s->internal;
}如此,便把指针是否为空以0和1的形式表示了出来。以前当我需要把一个字节或者一个int数据要用bit来区分两种含义的时候,假设一个字节变量 byte,可代表范围 0~255,0 代表false,1 ~255 代表true,我可能是这么写程序的BYTE Byte2Bit(BYTE byte){BYTE bit;
if(byte == 0){bit = 0;}else{bit = 1;}return bit;}或者是BYTE Byte2Bit(BYTE byte){return (byte ? 1 : 0);}学会这个小技巧之后,我们再看看以上代码,是不是即臃肿又低效?因为以上程序需要用到判断,但是如下写的话,汇编一条指令就搞定。BYTE Byte2Bit(BYTE byte){return !!byte;}这样,不管原先 byte 是什么值,函数Byte2Bit运行结束都将返回 0 或 1。优雅又高效,这不正是程序员毕生的追求嘛,毕竟优雅永不过时!