代码中行的含义(scanf)

时间:2015-06-05 16:48:31

标签: c

在我的代码中:

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <ctype.h>

void flushstdin() 
{
    int c;
    while((c = getchar()) != '\n' && c != EOF);

int main () {
    float a, b, c;
    float s=0, ar1=0, ar2=0;
    printf("Inform the value of size A.");
        while(scanf("%f",&a) != 1 || a <= 0){
        printf("Invalid value!");

“while(scanf(”%f“,&amp; a)!= 1 || a&lt; = 0){”是什么意思?

5 个答案:

答案 0 :(得分:2)

嗯,scanf返回给定模式中匹配的参数数量(%f部分)读取,或者如果遇到EOF则返回-1(意味着输入结束)。那么&lt; = 0应该有点自我解释。这两个组合的代码将导致输入循环,直到用户输入大于0的值或者根本没有输入任何值。

有关scanf的更多信息,请查看文档:{​​{3}}

答案 1 :(得分:1)

这会尝试从stdin读取一个float并检查是否成功读取了float(scanf返回成功读取的参数数)。如果a成功读取,则检查a是否大于零。它一直持续到两个条件都是假的。第二个条件仅在第一个条件为假时进行评估,即a已被读取。

答案 2 :(得分:0)

scanf()返回成功读取的元素数,在这种情况下,您希望读取的元素数为1。如果转换失败,则该值不会为1,因此您打印invalid value,扫描值a不能小于或等于0

答案 3 :(得分:0)

scanf(“%f”,&amp; a)用于程序中的输入值,这里你的条件是循环继续,直到你输入1或nagitive值

答案 4 :(得分:0)

虽然scanf返回一个浮点数(%f),例如4.535并将其存储到变量a(&amp; a)中,该变量不等于1或(||)a等于或小于零(a&lt; = 0)