鱼C论坛

 找回密码
 立即注册
查看: 1418|回复: 7

[已解决]整型被赋值1为什么含义

[复制链接]
发表于 2020-2-20 16:46:12 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#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的含义确实让我头大了
最佳答案
2020-2-20 18:01:50
  1. status = scanf("%d", &num);
复制代码


这一句,如果 scanf() 输入成功(即输入的是一个整数)则返回 1 ,不成功则返回 0 。这里判断 status == 1 就是判断输入是否成功。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-2-20 17:01:35 | 显示全部楼层
因为status是赋值一个指令,所以我猜应该是scanf调用成功或者有内容
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-20 18:01:50 | 显示全部楼层    本楼为最佳答案   
  1. status = scanf("%d", &num);
复制代码


这一句,如果 scanf() 输入成功(即输入的是一个整数)则返回 1 ,不成功则返回 0 。这里判断 status == 1 就是判断输入是否成功。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-20 18:51:48 | 显示全部楼层
1.scanf()函数有返回值且为int型。
2.scanf()函数返回的值为:正确按指定格式输入变量的个数
所以status==1的意思是说如果按正确格式输入一个整数,则返回值为1,循环继续,如果输入的不是整数是其它字符如 字母,符号这些,返回值为0,就会退出循环。如果输入的是小数,则小数点前面的整数会被&num接收到,小数点则被认为是输入了不正确的格式,返回0值并退出循环。
在循环里加入 printf("status= %d\n",status);这句,就能看出来了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2020-2-20 20:48:31 | 显示全部楼层
两个等号不是等于吗,为什么会理解成赋值
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-20 21:30:20 | 显示全部楼层

参考地址:https://www.runoob.com/cprogramming/c-function-scanf.html
返回值
如果成功,该函数返回成功匹配和赋值的个数。如果到达文件末尾或发生读错误,则返回 EOF。
百度是一个好东西
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-21 07:18:29 | 显示全部楼层
当scanf输入成功的时候,会返回1.否则返回零。即把1或零赋给了status,如果status的值为1,则继续执行循环。如果status的值为零,则终止循环。
  1. #include <stdio.h>

  2. int main()
  3. {
  4.         int num = 0;
  5.         long sum = 0L; // 0L表示类型为long的0
  6.         int status;

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

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

  15.         return 0;
  16. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-23 09:53:02 | 显示全部楼层
zltzlt 发表于 2020-2-20 18:01
这一句,如果 scanf() 输入成功(即输入的是一个整数)则返回 1 ,不成功则返回 0 。这里判断 status = ...

多谢解惑
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-27 05:17

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表