看了一份代码,几乎所有地方能用if else就用if else,于是我突然想到了三个问题:
在一个有实际意义的应用需求驱动之下(而不是像C混沌大赛那种装逼场景下)
1. 一行什么样的代码,当能完全读懂以后......就可以对一般水平的C码农证明"C语言不是这么简单"
2. 一行什么样的代码,当能自己一次写出来以后没bug运行........就可以对一般水平的C码农证明"C语言其实可以相当巧妙"
3. 一行什么样的代码,当能自己通过某些方法改进后以最优方式实现的时候.....就可以对一般水平的C码农证明"C的博大精深”
好像有点强迫症,但个人感觉,同样的东西,要写出更好的代码还是不能马马虎虎,if else死扛到底
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
我发现这个等式时,是为了解决快速判断用户输入的子网掩码是否合法:
- ////////////////////////////////////////////////////////////////////////////////
- //| |
- //| 函数名称 |: FTK_IsGoodNetmaskIPv4
- //| 功能描述 |: 判断给定的IPv4子网掩码是否符合规则
- //| |:
- //| 参数列表 |:
- //| |:
- //| 返 回 |:
- //| |:
- //| 备注信息 |: 子网掩码必须从bit31开始是连续的1,而后是连续的0
- //| |: 255.255.255.0 表示为 0xffffff00
- ////////////////////////////////////////////////////////////////////////////////
- bool_t FTK_IsGoodNetmaskIPv4(uint32_t mask)
- {
- if (mask == 0 || mask == ~0UL) {
- return false;
- }
- #if 0
- while (mask) {
- if (!(mask & (1UL << 31))) {
- return false;
- }
- mask <<= 1;
- }
- #else
- /*
- 设:mask=0b11111111111111111111111100000000
- 取反:a0=0b00000000000000000000000011111111
- a0+1必定是2的n次幂!所以((a0+1)&a0)必定为零
- */
- mask = ~mask; /* 取反 */
- if (mask & (mask + 1)) {
- return false;
- }
- #endif
- return true;
- }
复制代码当然还用于确认宏必须是2的n次幂,这样用于fifo长度非常快速:
- #if ((FIFO_BUF_SIZE < 2) || (FIFO_BUF_SIZE & (FIFO_BUF_SIZE-1)))
- #error FIFO_BUF_SIZE必须是2的n次方,且不能为0也不能为1!
- #endif
复制代码那个等式因为==优先级高于&会永远等于零。
抄个作业都屌儿郎当的,这样产品靠不住:
if ( 0 == (a & (a-1)) )
一周热门 更多>