C 这个输出是3,谁能告诉我怎么做?

C 这个输出是3,谁能告诉我怎么做?,c,printf,scanf,C,Printf,Scanf,这个函数的输出是3,有人能告诉我怎么做吗?在scanf使用&a并完成它的工作后,scanf的返回值被分配给a,如果输入以三个空格分隔的整数开始,则可以是3 返回值是成功匹配和分配的输入项的数目。使用&a完成scanf并完成其工作后,scanf的返回值被分配给a,如果输入以三个空格分隔的整数开始,则可以是3 返回值是成功匹配和分配的输入项目数。您将3个项目作为输入,即使您在a中从scanf收集所有输入,最后它将保留scanf的返回值,即成功读取的项目数 在您的特定运行中,成功读取了3个项目,因此a

这个函数的输出是3,有人能告诉我怎么做吗?

scanf
使用
&a
并完成它的工作后,
scanf
的返回值被分配给
a
,如果输入以三个空格分隔的整数开始,则可以是
3


返回值是成功匹配和分配的输入项的数目。

使用
&a
完成
scanf
并完成其工作后,
scanf
的返回值被分配给
a
,如果输入以三个空格分隔的整数开始,则可以是
3


返回值是成功匹配和分配的输入项目数。

您将3个项目作为输入,即使您在a中从scanf收集所有输入,最后它将保留scanf的返回值,即成功读取的项目数


在您的特定运行中,成功读取了3个项目,因此a保留了3个项目。您将3个项目作为输入,即使您在a中从scanf收集所有输入,最后它将保留scanf的返回值,即成功读取的项目数


在您的专项跑步中,成功阅读了3个项目,因此a可以容纳3个

您应该阅读的手册

返回值

这些函数返回成功匹配和分配的输入项的数量,该数量可以少于提供的数量,如果早期匹配失败,甚至可以为零

如果在第一次成功转换或匹配失败发生之前到达输入端,则返回值EOF。如果发生读取错误,也会返回EOF,在这种情况下,设置了流的错误指示器(参见ferror(3)),并设置了errno以指示错误

就像你想要的
scanf()
parse 3
long int
,它可以返回
EOF
0
1
2
3

顺便说一下,
scanf()
的返回类型是
int
,而不是
long int

int main()
{

    long int a = scanf("%ld %ld %ld",&a,&a,&a);
    printf("%ld",a);
    return 0;   
}
#包括
内部主(空)
{
长内al、bl、cl;
int-ret=scanf(“%ld%ld%ld”、&al、&bl、&cl);
printf(“ret=%d:,ret”);
如果(ret==3){
printf(“al=%ld,bl=%ld,cl=%ld\n”,al,bl,cl);
} 
}

您应该阅读的手册

返回值

这些函数返回成功匹配和分配的输入项的数量,该数量可以少于提供的数量,如果早期匹配失败,甚至可以为零

如果在第一次成功转换或匹配失败发生之前到达输入端,则返回值EOF。如果发生读取错误,也会返回EOF,在这种情况下,设置了流的错误指示器(参见ferror(3)),并设置了errno以指示错误

就像你想要的
scanf()
parse 3
long int
,它可以返回
EOF
0
1
2
3

顺便说一下,
scanf()
的返回类型是
int
,而不是
long int

int main()
{

    long int a = scanf("%ld %ld %ld",&a,&a,&a);
    printf("%ld",a);
    return 0;   
}
#包括
内部主(空)
{
长内al、bl、cl;
int-ret=scanf(“%ld%ld%ld”、&al、&bl、&cl);
printf(“ret=%d:,ret”);
如果(ret==3){
printf(“al=%ld,bl=%ld,cl=%ld\n”,al,bl,cl);
} 
}

是的,@Pras是正确的。因为您(显然)成功地从输入中读取了三个值,所以scanf的返回值是三。但在一条语句中多次使用同一变量的set值是非常糟糕的编程实践。在本例中,您将“a”的值设置了四次,三次是从输入中扫描的结果,第四次是作为返回值的赋值。如果没有指定a作为调用的返回值,“a”的值将是不可预测的,因为参数的处理顺序取决于实现。如果你输入“11 22 33”,“a”可能是11或33。。。甚至22,这取决于编译器如何处理scanf。

是的,@Pras是正确的。因为您(显然)成功地从输入中读取了三个值,所以scanf的返回值是三。但在一条语句中多次使用同一变量的set值是非常糟糕的编程实践。在本例中,您将“a”的值设置了四次,三次是从输入中扫描的结果,第四次是作为返回值的赋值。如果没有指定a作为调用的返回值,“a”的值将是不可预测的,因为参数的处理顺序取决于实现。如果你输入“11 22 33”,“a”可能是11或33。。。甚至22,这取决于编译器处理scanf的方式。

您忘记提供与输出示例相对应的输入示例。使用“42 41 40”作为输入,或“半打”。您忘记提供与输出示例相对应的输入示例。使用“42 41 40”作为输入,或“半打”。