gpt4 book ai didi

c - 请解释 while 循环中 scanf() 的使用

转载 作者:行者123 更新时间:2023-11-30 15:36:42 25 4
gpt4 key购买 nike

我正在彻底学习C语言。我从另一个网站获得了下面的代码,并对它有一些疑问。如果我没有正确使用本网站,我提前表示歉意。我是新来的。有人可以解释一下为什么在 while 循环中使用 scanf() 而不是之前使用 scanf() 吗?

#include <stdio.h>
#include <conio.h>

void main()
{
int a[2][2],*p;
p = &a[0][0];

printf("enter 4 numbers\n");
while ( p < (&a[0][0]+4) && scanf("%d",p++) );
printf("the numbers are\n");
p=&a[0][0];
while( p < (&a[0][0]+4) && printf("%d",*p++) );
}

最佳答案

  1. conio.h 用于 MS-DOS。您使用的是 MS-DOS 吗?可能不会。不要包含此 header 。
  2. {}; 添加到每个 while 循环的末尾。这是正确的语法。否则,您将收到解析器错误。
  3. 虽然此代码将在您解决这些问题后打印输入的四个值,但这是一种向您介绍循环的复杂方法。 printf 将返回打印的字符数。 scanf 如果成功,该函数将返回成功填充的参数列表的项目数。此计数可能与预期的项目数匹配,也可能由于匹配失败、读取错误或到达文件结尾而减少(甚至为零)。
  4. &a[0][0]+4 是内存地址。每次运行该程序时,您都会获得不同的内存地址。
  5. p=&a[0][0] 将从头开始启动 p,准备在下一个 while 循环中打印出值。

您可以在 pointer arithmetic of multi-dimensional arrays here 上阅读更多内容.

关于c - 请解释 while 循环中 scanf() 的使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22478403/

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