如何int a = scanf("%d", &a);
不同int a; scanf("%d", &a);
?
我需要一些帮助,以了解这两件事在幕后的工作方式,因为它们显然会输出不同的结果。
scanf
是C中的标准输入函数。
您应该了解的第一件事scanf
是“返回值”。如果您使用的是Linux,请参阅手册页以scanf
访问man scanf
。
scanf
返回从标准输入读取的值的数量。也就是说scanf
,在这种情况下,您将返回1,因为仅读取了一个值。
所以如果你跑
int a = scanf("%d", &a);
首先,表达式int a
将创建一个新的int变量,其大小为int(4个字节)。然后scanf("%d", &a)
从标准输入中输入一个大小为int的值。假设您输入5。
但随后由于要设置a
到任何scanf
正在恢复,值即数量从标准输入是1,所以阅读a
将永远是1,无论你进入输入什么样的价值。
现在,至于
int a; scanf("%d", &a);
你正在做的是,首先建立a
有int a
。然后,您“不”将返回值保存在scanf
任何地方。这意味着scanf
您输入的任何值都会被读入a
。就是这样。返回值(对于scanf
,返回值是输入值的数量;在这种情况下,我们仅输入一个值,因此它是1)没有被馈送到a或任何其他变量。因此,a
现在具有您先前从标准输入中输入的值。