5

我是 C 的初学者,所以如果这个问题很愚蠢或者问得很奇怪,请原谅我。

我正在阅读C prime plus ,第 8 章中的示例之一是一些循环,用于测试用户是否输入 - a newline character or not,我无法理解。

代码很短,所以我将向您展示:

int main(void)
{
    int ch; /* character to be printed */
    int rows, cols; /* number of rows and columns */
    printf("Enter a character and two integers:\n");
    while ((ch = getchar()) != '\n')
    {
        if (scanf("%d %d",&rows, &cols) != 2)
            break;
        display(ch, rows, cols);
        while (getchar() != '\n')
            continue;
        printf("Enter another character and two integers;\n");
        printf("Enter a newline to quit.\n");
    }
    printf("Bye.\n");
    return 0;
}
void display(char cr, int lines, int width) // the function to preform the printing of the arguments being passed 

我不明白的就在这里:

while (getchar() != '\n')
                continue;
            printf("Enter another character and two integers;\n");
            printf("Enter a newline to quit.\n");

首先,while (getchar() != '\n')正在测试输入的第一个 ch 对吗?其次,如果这是真的,为什么 continue 没有跳过 printf 语句并转到第一个 while?这不是应该做的吗?

肿瘤坏死因子

4

4 回答 4

7

因为while语句后面没有大括号,所以只有下一行包含在循环中。因此,continue继续 while 循环,直到找到换行符,然后继续执行printf语句。

它等价于:

 while (getchar() != '\n')
 {
    continue;
 }
于 2013-01-31T13:33:20.587 回答
1

continue 应用于两个-swhile之前的位置,因此当您进入时,您将离开最里面的位置,同时返回该行printf\n

printf("Enter another character and two integers;\n");
于 2013-01-31T13:32:37.193 回答
0

这里的 while() 循环只与 continue 语句相关联。所以它与 printf 语句没有关系............

于 2013-02-04T18:13:10.880 回答
0

continue适用于最近的循环while

while (stuff)
  continue;

是相同的

while (stuf);

(注意分号)。

你只是说“继续循环直到条件变为假”。

于 2013-01-31T13:34:35.363 回答