莫自我 发表于 2020-2-20 16:46:12

整型被赋值1为什么含义

#include <stdio.h>

int main()
{
      int num = 0;
      long sum = 0L; // 0L表示类型为long的0
      int status;

      do
      {
                printf("请输入合法的数字:");
                sum = sum + num;
                status = scanf("%d", &num);
      } while(status == 1);

      printf("结果是:%ld\n", sum);

      return 0;
}
像这个陈序中的 status 在while后被赋值为1 是什么意思 我没能看懂    不知道1代表的含义
int 是将status归类为整型但赋值1的含义确实让我头大了

qiuyouzhi 发表于 2020-2-20 17:01:35

因为status是赋值一个指令,所以我猜应该是scanf调用成功或者有内容

zltzlt 发表于 2020-2-20 18:01:50

status = scanf("%d", &num);

这一句,如果 scanf() 输入成功(即输入的是一个整数)则返回 1 ,不成功则返回 0 。这里判断 status == 1 就是判断输入是否成功。

chxchxkkk 发表于 2020-2-20 18:51:48

1.scanf()函数有返回值且为int型。
2.scanf()函数返回的值为:正确按指定格式输入变量的个数
所以status==1的意思是说如果按正确格式输入一个整数,则返回值为1,循环继续,如果输入的不是整数是其它字符如 字母,符号这些,返回值为0,就会退出循环。如果输入的是小数,则小数点前面的整数会被&num接收到,小数点则被认为是输入了不正确的格式,返回0值并退出循环。
在循环里加入 printf("status= %d\n",status);这句,就能看出来了。

kdCC 发表于 2020-2-20 20:48:31

两个等号不是等于吗,为什么会理解成赋值

4goodworld 发表于 2020-2-20 21:30:20


参考地址:https://www.runoob.com/cprogramming/c-function-scanf.html
返回值
如果成功,该函数返回成功匹配和赋值的个数。如果到达文件末尾或发生读错误,则返回 EOF。
百度是一个好东西

良弓无箭 发表于 2020-2-21 07:18:29

当scanf输入成功的时候,会返回1.否则返回零。即把1或零赋给了status,如果status的值为1,则继续执行循环。如果status的值为零,则终止循环。 #include <stdio.h>

int main()
{
      int num = 0;
      long sum = 0L; // 0L表示类型为long的0
      int status;

      do
      {
                printf("请输入合法的数字:");
                sum = sum + num;
                status = scanf("%d", &num);
      } while(status == 1);//当scanf输入成功的时候,会返回1.否则返回零。
                //即把1或零赋给了status,如果status的值为1,则继续执行循环。如果status的值为零,则终止循环。

      printf("结果是:%ld\n", sum);

      return 0;
}

莫自我 发表于 2020-2-23 09:53:02

zltzlt 发表于 2020-2-20 18:01
这一句,如果 scanf() 输入成功(即输入的是一个整数)则返回 1 ,不成功则返回 0 。这里判断 status = ...

多谢解惑
页: [1]
查看完整版本: 整型被赋值1为什么含义