整型被赋值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的含义确实让我头大了 因为status是赋值一个指令,所以我猜应该是scanf调用成功或者有内容 status = scanf("%d", &num);
这一句,如果 scanf() 输入成功(即输入的是一个整数)则返回 1 ,不成功则返回 0 。这里判断 status == 1 就是判断输入是否成功。 1.scanf()函数有返回值且为int型。
2.scanf()函数返回的值为:正确按指定格式输入变量的个数
所以status==1的意思是说如果按正确格式输入一个整数,则返回值为1,循环继续,如果输入的不是整数是其它字符如 字母,符号这些,返回值为0,就会退出循环。如果输入的是小数,则小数点前面的整数会被&num接收到,小数点则被认为是输入了不正确的格式,返回0值并退出循环。
在循环里加入 printf("status= %d\n",status);这句,就能看出来了。 两个等号不是等于吗,为什么会理解成赋值
参考地址:https://www.runoob.com/cprogramming/c-function-scanf.html
返回值
如果成功,该函数返回成功匹配和赋值的个数。如果到达文件末尾或发生读错误,则返回 EOF。
百度是一个好东西 当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;
} zltzlt 发表于 2020-2-20 18:01
这一句,如果 scanf() 输入成功(即输入的是一个整数)则返回 1 ,不成功则返回 0 。这里判断 status = ...
多谢解惑
页:
[1]