2

我可以在 printf() 函数中使用 scanf() 函数来给出定义的输出吗?如果是,请向我解释以下简单代码的输出:

#include <stdio.h>
#include <conio.h>
int main()
{
  int a;
  printf("%d",scanf("%d",&a));
  return 0;
}
4

5 回答 5

6

不完全是。scanf返回解析的项目数,但您可以这样做:

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

使用逗号运算符丢弃结果scanf并改用 a 的值。

于 2013-03-18T17:08:27.103 回答
2

printf并且scanf只是功能。您可以像上面那样使用一个函数的输出作为另一个函数的参数。

正如@MichaelT 在他的评论中指出的那样,返回值不是scanf从键盘读取的值。如果您检查手册页,它会显示:

这些函数返回成功匹配和分配的输入项的数量,该数量可能少于提供的数量,或者在早期匹配失败的情况下甚至为零。

换句话说,在您的示例中1,如果输入了有效整数,或者0没有输入有效整数,它将返回 。

于 2013-03-18T17:10:14.343 回答
1

scanf返回成功进行的转换次数,示例程序将打印 a 1, a0或 a ,具体-1取决于提供的输入(1如果输入的开头可转换为整数,0对于非整数输入,-1对于输入错误)。

于 2013-03-18T17:10:52.380 回答
1

易于理解

在 C 中,printf() 返回成功写入输出的字符数,scanf() 返回成功读取的项目数。

例如,下面的程序打印 akp 3

int main()
{
  printf(" %d", printf("%s", "akp"));
  getchar();
}  

无论用户输入什么字符串,下面的程序都会打印 1。

int main()
{
  char a[50];  
  printf(" %d", scanf("%s", a));
  getchar();
}  
于 2013-10-05T22:02:01.227 回答
1

实际上,您可以使用 printf() 来输出函数的返回值。

#include <stdio.h>
#include <conio.h>
int main()
{
  int a;
  printf("%d",scanf("%d",&a));
  return 0;
}

如果你输入一个数字。输出1,表示scanf()函数执行成功,返回值为1。


如果你输入一个字母。它会输出 0。这意味着函数指令的执行失败:这个条件是匹配失败。返回值为 0。

于 2017-01-16T09:28:25.323 回答