本帖最后由 jackz007 于 2022-10-10 14:02 编辑
C 语言的函数一般都有返回值,对于这一句而言
- status = scanf("%d" , & num) ;
复制代码
status 就是在获取函数 scanf() 的返回值,在正常情况下,scanf() 返回的是从一次键盘输入中读取到参数的个数,如果从键盘输入中正常读取到 1 个整型数那么, status 的值就是 1。
而:
- do {
- . . . . . .
- status = scanf("%d" , & num) ;
- . . . . . .
- } while (status == 1) ;
复制代码
的意思是,如果这一次从键盘输入中正常读取到 1 个整型数,那就继续循环,读取下一个 . . . . . .,直到 status 的值不为 1。
看看下面的运行结果也许可以加深理解:
- D:\[00.Exerciese.2022]\C>g++ -o x x.c
- D:\[00.Exerciese.2022]\C>x
- 请输入合法的数字:1
- 请输入合法的数字:2
- 请输入合法的数字:3
- 请输入合法的数字:4
- 请输入合法的数字:5
- 请输入合法的数字:a
- 结果是:15
- D:\[00.Exerciese.2022]\C>
复制代码
很显然,循环在键盘输入不是数字的那一次被终止,这就是循环条件 while(status == 1) 的作用。
另:0L 代表 long 型(一般是 32 位)的立即数 0,当然,0LL 代表的是一个 long long 型(64 位)的立即数 0。
至于
不要怀疑,你的感觉是正确的,等号在任何时候都是赋值,没错,这就是在为 long 型变量 sum 赋初值 0。