gpt4 book ai didi

c - 为什么我不能将 scanf 语句直接分配给 C 中的变量?

转载 作者:太空宇宙 更新时间:2023-11-04 05:15:58 25 4
gpt4 key购买 nike

int a = scanf("%d", &a);int a; 有何不同? scanf("%d", &a);?

我需要一些帮助来理解这两个东西在幕后是如何工作的,因为它们显然输出不同的结果。

最佳答案

scanf 是 C 中的标准输入函数。

关于scanf,您首先应该了解的是“返回值”。如果您使用的是 Linux,请访问 man scanf 以参阅 scanf 的手册页。

scanf 返回从标准输入读入的值的数量。即您的 scanf 将返回 1,因为在这种情况下只读入了一个值。

所以如果你跑

int a = scanf("%d", &a);

首先,表达式 int a 将创建一个新的 int 大小的变量(4 字节)。然后 scanf("%d", &a) 将从您的标准输入输入一个大小为 int 的值。假设您输入 5。

但是当您将 a 设置为返回的任何 scanf 时,即从标准输入读取的值的数量为 1。所以 a 无论您在 input 中输入什么值,都将始终为 1。

现在,至于

int a; 
scanf("%d", &a);

你正在做的是,首先用int a创建a。那么你“不”在任何地方保存 scanf 的返回值。这意味着从 scanf 中,您输入的任何值都会被读入 a。就是这样。返回值(对于 scanf,返回值是输入值的数量;在这种情况下我们只输入一个值,因此它是 1)没有被提供给 a 或任何其他变量。所以 a 现在具有您之前从标准输入中输入的值。

关于c - 为什么我不能将 scanf 语句直接分配给 C 中的变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56927436/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com