- 论坛徽章:
- 0
|
本帖最后由 三月廿七 于 2011-11-05 09:50 编辑
while(1) 比 for (; 清晰
MMMIX 发表于 2011-11-05 09:30 ![]()
我也感觉 while(1) 比 for(; ; ) 清晰
不过,写while(1) pc_lint会给警告, for (; ; )就不会
而且有些人习惯写 for (; ; ), 我也不明白为什么...
比如
static void
traverse_iterative (struct bst_node *node, bst_item_func *action, void *param)
{
struct bst_node *stack[BST_MAX_HEIGHT];
size_t height = 0;
for (;; )
{
while (node != NULL)
{
if (height >= BST_MAX_HEIGHT)
{
fprintf (stderr, "tree too deep\n");
exit (EXIT_FAILURE);
}
stack[height++] = node;
node = node->bst_link[0];
}
if (height == 0)
break;
node = stack[–height];
action (node->bst_data, param);
node = node->bst_link[1];
}
}
int partition(Item a[], int l, int r)
{ int i = l-1, j = r; Item v = a[r];
for (;; )
{
while (less(a[++i], v)) ;
while (less(v, a[--j])) if (j == l) break;
if (i >= j) break;
exch(a, a[j]);
}
exch(a, a[r]);
return i;
}
...
当然,这些也不一定"权威",
至少,我表示对while(1) 是否比 for(; ; ) 清晰存在质疑
ps: glib真是好东西... |
|