我很难弄清楚为什么会这样。当我在linux终端上编译并运行我的代码时,scanf()
函数似乎在它接受输入的意义上运行良好,但是由于某种原因它并没有实际将该值存储到指定的变量中,相反,它使它成为1。
我查看了我的代码,无法查看和发布,但我缺乏C知识,所以我们非常感谢您的帮助。
int main() {
int a, b, c, d, e, f;
printf("Please enter the value of a: ");
a = scanf("%d", &d);
printf("a = %d\n", a);
printf("Please enter the value of b: ");
b = scanf("%d", &e);
printf("b = %d\n", b);
printf("Please enter the value of c: ");
c = scanf("%d", &e);
printf("C = %d\n", c);
c = c + b;
printf("C = %d\n", c);
if (a > 1) {
printf("B = %d\n", b);
printf("C = %d\n", c);
} else {
printf("A is smaller or equal to 1 \n");
}
if (b > 3 || c > 3) {
printf("A = %d\n", a);
} else {
printf("B is less than or equal to 3\n");
printf("B = %d\n", b);
printf("C = %d\n", c);
}
}
非常感谢帮助。
答案 0 :(得分:4)
我认为这里的混淆源于变量存储扫描的值,以及scanf()
返回的内容。
scanf()
的第二个参数是将存储扫描值的地址scanf()
的返回值是扫描的值的数量(或一些错误代码之一)有了这个理解,再看一下这段代码:
int a,b,c,d,e,f;
printf("PLease enter the value of a: ");
a = scanf("%d", &d);
printf("a = %d\n",a);
第三行扫描一个值并将其存储在变量d
中(因此&d
调用结束时的scanf()
。它还将扫描的值存储到变量a
中。然后,它打印出a
- 此时为1,因为上一次scanf()
调用只找到一个值。
更好的模式是扫描您要询问的变量(在这种情况下,将&a
传递给scanf()
),然后检查之前发生的任何错误的返回值继续你的计划。