我是C的新手,正在编写一个非常简单的小程序。问题是scanf()
输错了: -
#include <stdio.h>
int main(int args, char*argv[])
{
int num1 = scanf("%d",&num1) ;
int num2 =scanf("%d", &num2) ;
printf("Num1 = %d\n", num1) ;
printf("Num2 = %d\n", num2) ;
return 0 ;
}
当我输入34和23作为输入时,它输出: -
Num1 = 1
Num2 = 1
为什么会这样?
答案 0 :(得分:4)
请勿将scanf
的返回值分配给num1
和num2
。 scanf
的返回值表示扫描是否成功,而不是您的想法。
int num1, num2;
scanf("%d", &num1);
scanf("%d", &num2);
答案 1 :(得分:3)
这是因为scanf
返回匹配的字符数。 scanf("%d",&num1)
和scanf("%d",&num2)
将返回1
。您正在将该号码指定为1
至num1
和num2
现在按如下方式进行:
#include <stdio.h>
int main(int args, char*argv[])
{
int num1;
int num2;
scanf("%d",&num1) ;
scanf("%d", &num2) ;
printf("Num1 = %d\n", num1) ;
printf("Num2 = %d\n", num2) ;
return 0 ;
}
答案 2 :(得分:2)
您将scanf的返回值分配给您的值。 scanf返回匹配的字符数;你已经传递了一个对你希望scanf存储结果的变量的引用。
答案 3 :(得分:1)
为什么要将scanf的返回值分配到num1和num2?
我的建议:
#include <stdio.h>
int main(int args, char*argv[])
{
int num1, num2;
scanf("%d",&num1);
scanf("%d", &num2);
printf("Num1 = %d\n", num1);
printf("Num2 = %d\n", num2);
return 0;
}