VS2008运行C后不同结果!(已解决问题1)
本人刚接触C,现在碰到个问题,希望有人来帮忙,在线等,谢谢问题一:VS2008运行,求输入的数字之和,但是第一段代码能正确求出,第二段代码得出的不知道是什么值,望人解答!(已解决!)
问题二:第9行代码是什么意思?他为什么不等价于:
scanf("%ld",&num);
status = num;
是否可以这样来理解: 如果scanf读入一个整数,则将这个整数存入num中,并返回值1,(为什么会返回值1,不返回其他值?)。是否是因为前面定义的num为一个整形变量,如果scanf读入的是一个整数,那么整个语句是否就是一个判断语句?假如读入了一个整数,则scanf为真,即返回值1,否则为假,返回值0(隐藏了bool语句?)
------------------------------------------------------------------------
#include <stdio.h>
int main(void)
{
long num; //定义长整型变量 num
long sum = 0L; //定义长整型变量 sum 并把其值初始化为0
int status; //定义整型变量 status
printf("Please enter an integer to be summed. ");
printf("q to quit): ");
status = scanf("%ld", &num); //第9行
while (status == 1) //循环条件 status == 1
{
sum = sum + num;
printf("Please enter next integer (q to quit); ");
status = scanf("%ld", &num);
}
printf("those integers sum to %ld.\n",sum);
return 0;
}
-----------------------------------
/*
Please enter an integer to be summed. q to quit): 1
Please enter next integer (q to quit); 2
Please enter next integer (q to quit); 3
Please enter next integer (q to quit); q
those integers sum to 6.
请按任意键继续. . .
*/
--------------------------------------------
--------------------------------------------------------------------------------
#include <stdio.h>
int main(void)
{
long num;
long sum = 0L; //写在数字后面,指定数字的类型。 但是完全没有必要
int status;
printf("请在键盘上输入为整数的数字");
printf("请按q键退出。\n");
status = scanf("%ld", &num);
while (status == 1)
{
sum = sum + num;
printf("请继续输入为整数的数字:");
status = scanf("%ld", &num);
}
printf("所输入的整数的和为:%ld。\n", &sum); //此处应为 sum ,感谢4楼指点,拜谢!
return 0;
}
-------------------------------
/*
请在键盘上输入为整数的数字请按q键退出。
1
请继续输入为整数的数字:2
请继续输入为整数的数字:3
请继续输入为整数的数字:q
所输入的整数的和为:3472344。
请按任意键继续. . .
*/
---------------------------------
[ 本帖最后由 lrsummer 于 2011-10-28 07:47 编辑 ]