在 while 循环或 do while 循环中使用 getchar()

时间:2021-04-25 02:33:41

标签: c while-loop do-while

我最近在阅读 C 入门加上我有一个问题:

void foo1(int n, char ar[n])
{
    int i = 0;

    while ((ar[i] = getchar()) && !isblank(ar[i++]) && i < n)
        continue;
}
void foo2(int n, char ar[n])
{
    int i = 0;
    do
        ar[i] = getchar();
    while (!isblank(ar[i++]) && i < n);
}

似乎它们在测试时有相同的输出,但我仍然想知道:

这两个函数是等价的吗?

在编译时,它们是否生成相同的编译代码?

如果不是,哪个更有效?

1 个答案:

答案 0 :(得分:0)

因此,while 命令首先检查条件,而 do...while 在一次内执行命令,然后检查条件。

while 命令比 do...while 命令更常见,因为大多数程序员不希望循环执行一次,无论条件是否满足。