我正在从一本书中学习C,我开始使用循环指令。 但是有一个我无法理解的示例代码。

任何人都可以告诉我为什么作者使用status = scanf("%ld", &num); 为什么有一个= with scanf

/* summing.c -- sums integers entered interactively */
#include <stdio.h>
int main(void)
{
    long num;
    long sum = 0L; /* initialize sum to zero */
    int status;      
    printf("Please enter an integer to be summed ");
    printf("(q to quit): ");
    status = scanf("%ld", &num);
    while (status == 1) /* == means "is equal to" */
    {
        sum = sum + num;
        printf("Please enter next integer (q to quit): ");
        status = scanf("%ld", &num);
    }
    printf("Those integers sum to %ld.\n", sum);
    return 0;
}

===============>>#1 票数:6

因为scanf()返回一个值,表示字符串与传递的格式匹配的程度,即成功填充数据的参数数量。

您会知道,如果您阅读某种手册页或标准,如果您遇到过您不知道的功能,请尽可能多地阅读它,以便您了解如何使用它。

===============>>#2 票数:5

scanf从其说明符列表中返回成功匹配的项目数。 因此,如果输入“q”,则scanf将返回0(因为“q”不是整数),循环将终止。

===============>>#3 票数:5

请查看scanf()手册页 它返回成功扫描的项目数。 因此返回值用于检查scanf()的成功。

在你的代码中,

 status = scanf("%ld", &num);
 // code
 while (status == 1) 

scanf()的返回值存储到status并稍后检查以检查scanf()是否已成功扫描1项目。

  • 如果它返回1 ,则表示已输入long int 然后while()循环将继续,请求下一个输入。
  • 输入q ,它将与转换说明符%ld不匹配,因此scanf()将失败,因此它将返回0 然后while()循环将终止。

  ask by dhiman007 translate from so

未解决问题?本站智能推荐: