- 论坛徽章:
- 5
|
回复 8# wwwsq
……………………我经常这么干……………………
通常是&&里面判断很多条件,然后顺手把实际操作当做最后一个条件,然后在if里面写错误处理:
- if (!cond1 || !cond2 || !cond3 || !do_something(v1, v2, v3))
- printf("ERROR!");
复制代码 反正就是这么个意思吧。
还有就是while循环里面,给个实际的例子吧:- static int read_one_char(ParseState *ps) {
- if (isnewline(ps) || iseoz(ps))
- return 0;
- if (test_current(ps, ESCAPE_CHAR))
- read_escape(ps);
- else if (test_current(ps, COMMENT_CHAR))
- skip_comment(ps);
- else
- save_and_next(ps);
- return 1;
- }
- static size_t read_word(ParseState *ps) {
- assert(!isspace(ps) || mb_bufflen(&ps->buff) > 0);
- while (!isspace(ps) && read_one_char(ps))
- ;
- skip_whitespace(ps);
- return mb_bufflen(&ps->buff);
- }
复制代码 这是从我写的ninja语言格式分析器里面随意抽出来的一段。read_one_char读取一个字节,然后进行实际操作,最后返回到底读到没(newline要特殊处理)。在这个情况下,while里面就直接&&搞事了,最后循环体是个空语句,因为事情都搞完了………… |
|