使用scanf函数为变量赋值

时间:2017-10-22 14:07:05

标签: c scanf variable-assignment

无论我为x输入什么值,y值的输出始终为1.任何想法为什么?

#include <stdio.h>    
int main() {
    int x, y;
    y = scanf("%d", &x);
    printf("y = %d\n", y);
    return 0;
}

1 个答案:

答案 0 :(得分:1)

来自scanf(3) - Linux man page

  

这些函数 返回成功匹配并分配 的输入项数,这些项可能少于提供的数,或者在早期匹配失败时甚至为零。

由于scanf返回值是写入的项目数(在您的情况下为1,因为只扫描了1 int),而不是扫描字符的整数值

int main() {
    int x, y, z, n;
    n = scanf("%d", &x);
    printf("n = %d\n", n);                 // prints 1
    n = scanf("%d%d", &x, &y);
    printf("n = %d\n", n);                 // prints 2
    n = scanf("%d%d%d", &x, &y,&z);
    printf("n = %d\n", n);                 // prints 3
    return 0;
}