把指针当数组元素来用 unsigned char *data_nit; unsigned int totalLength; unsigned char data1,data2; …… data1 = data_nit++; data2 = data_nit++; totalLength = ( (data1 & 0x0f)<<8 ) | data2; 修正:1.1.2.18 |
两态?多态?
函数:get_FMODE if (p) { printf("************* get_FACMODE %s **************/n", p); fmode = atoi(p); if(fmode != 0 && fmode != 1) { printf("error@get_FMODE:fmode != 0 && fmode != 1,fmode=%d/n",fmode); } return fmode; } 读者读到这里就会有疑问,如果返回2,3,……调用者该怎么操作才算对呢? 是否处于工厂模式(fmode)是一个YES or NO的问题。即本来是一个两态的问题,但是程序写成了多态的问题 |
int OR unsigned int
这其实不算一个问题,可能算的上技巧。 比较如下两段代码: int foo(int arg) { if (arg < 0 || arg > 100) return ERROR; ... } int foo(unsigned int arg) { if (arg > 100) return ERROR; ... } 这里的思想究其根本是归并,如果我们把一个int类型的数看成unsigned int,那么负数就归并到大数里面去了。 归并的结果就是简化处理的流程。程序简单了,错误自然就会少。 |