我对 C 完全陌生,现在我正在尝试掌握基础知识,但在从 scanf 读取数据和填充数组时遇到问题。根据我的观察,我认为问题出在 scanf 上,但我不确定。
现在代码如下所示:
int main()
{
int array[11];
printf("Write down your ID number!\n");
scanf("%d", array);
// trying to `printf(array)` here prints what seems like a random number
if (array[0]=1) // this branch is always taken
{
printf("\nThis person is a male.");
}
else if (array[0]=2) // this branch is never taken
{
printf("\nThis person is a female.");
}
return 0;
}
预期行为:该程序的目的是要求提供 ID,并根据第一个数字确定给定的人是否是男性(1)或女性(2).
实际行为:
The array seems not to be filled properly.
这是通过 scanf 之后的 printf(array) 检查的,结果是随机数。
无论输入什么数字,程序总是说这个人是男性。
if (array[0]=1)应该if (array[0]==1).
与else if (array[0]=2).
请注意,赋值表达式返回指定值, 在这种情况下if (array[0]=1)将永远正确,因为在 C 语言的 if 语句中,非零整数为真,只有数字零为假 https://en.cppreference.com/w/c/language/if,这就是为什么如果不更改 if 语句下面的代码将始终执行的原因= to ==.