总之 , 因为while循环是入口条件循环 , 程序在进入循环体之前必须获取输入的数据并检查status的值 , 所以在while前面要有一个scanf() 。要让循环继续执行 , 在循环内需要一个读取数据的语句 , 这样程序才能获取下一个status的值 , 所以在while循环末尾还要有一个scanf() , 它为下一次迭代做好了准备 。可以把下面的伪代码作为while循环的标准格式:
get first value to be testedwhile the test is successfulprocess valueget next value
C 风格读取循环根据伪代码的设计思路 , 程序清单6.1可以用Pascal、BASIC或FORTRAN来编写 。但是C更为简洁 , 下面的代码:
status = scanf("%ld", &num);while (status == 1){/* loop actions */status = scanf("%ld", &num);}// can be replaced by the following:while (scanf("%ld", &num) == 1){/* loop actions */}
第二种形式同时使用scanf()的两种不同的特性 。
首先 , 如果函数调用成功 , scanf()会把一个值存入num 。
然后 , 利用scanf()的返回值(0或1 , 不是num的值)控制while循环 。
因为每次迭代都会判断循环的条件 , 所以每次迭代都要调用scanf()读取新的num值来做判断 。换句话说 , C的语法特性让你可以用下面的精简版本替换标准版本 。
【C语言之妙:scanf 的双重作用】
推荐阅读
- 世界十大自然旅游奇观 世界八大自然奇景
- 贡茶的抹茶奶盖怎么做,抹茶蜜语的做法
- 抖音fyp是啥 fyp是什么意思啊网络语
- 日语专业就业前景分析
- 十大抗癌植物 抗癌的植物有哪几种
- 河北蚩尤古墓 蚩尤墓为什么不挖
- 为什么红茶在英语里叫"black[红茶]
- 隔夜茶7大巧妙用法,隔夜茶洗头正确方法
- 宇宙中有哪些星系十分恐怖
- C语言的类型转换 Conversion and Casting