C语言scanf的用法
本帖最后由 一剑飘零 于 2021-9-6 09:47 编辑#include <stdio.h>
int main() {
int a;
int b;
b=scanf("%d", &a);
printf("b=%d", b);
return 0;
我看有人这样写过,就想尝试一下,结果却不对,百思不得其解。
为什么a不等于b呢,输入时不是把a的值赋值给b了吗?为什么b一直是1呢?
下面这个就正常,看不出哪里错了。
int main() {
int a;
int b;
scanf("%d", &a);
b = a;
printf("b=%d", b);
return 0;
} scanf没有返回输入值,它只是把输入值传输给了变量a 返回已成功转换和分配的字段数量;返回值不包括已读取但未分配的字段。 返回值为 0 表示没有分配任何字段。
https://docs.microsoft.com/zh-cn/cpp/c-runtime-library/reference/scanf-scanf-l-wscanf-wscanf-l?view=msvc-160 这时候就很适合举一反三,把变量类型改了,再试试,你就知道为啥不能使用那个返回值了。 本帖最后由 一剑飘零 于 2021-9-6 06:24 编辑
三滑稽甲苯 发表于 2021-9-5 23:15
scanf没有返回输入值,它只是把输入值传输给了变量a
头有点晕,我看有的这样写是正常的。{:1_908:} 真的小白 发表于 2021-9-5 23:16
返回已成功转换和分配的字段数量;返回值不包括已读取但未分配的字段。 返回值为 0 表 ...
{:1_890:}不明白,既然是赋值怎么就不对呢 第一个为什么不一样,b是1,a是输入值,scanf函数返回值没有多大意义,如果非要,表示函数执行成功,故返回1。
第二个b=a,把输入值又给了b,它们肯定一样嘛 本帖最后由 一剑飘零 于 2021-9-6 07:39 编辑
无闻无问 发表于 2021-9-6 06:58
第一个为什么不一样,b是1,a是输入值,scanf函数返回值没有多大意义,如果非要,表示函数执行成功,故返回 ...
有点明白了,意思就是说只是返回一个1表示成功,0表示不成功,没有值的传递。可是我看教程这样写却可以传递值,不知道错哪里了。