(因为是刚接触c语言的小白,所以使用最简单的术语进行解读。-----以下是本人在学习中收集并理解整理的,如有错误还请大佬指出)

while/do—while

先来说说while吧

while

虽然可能大家都知道了,但是都是小白,我还是解释一下吧。while,当满足循环的前提条件时,会进行一次循环语句。随后再判断一次前提条件,如果成立,继续循环,直到条件不成立,结束while循环。

图像大概是这样的

while使用格式是这样的:

while(循环的前提条件)
{循环语句
}

while()后面的  {}  如果循环语句只有一句的话,可以不加。系统会默认while后面第一句话为while的循环语句。如果有两条语句而不打   {}   的话,只有第一条语句会进入循环。

(要注意while语句后面没有加   ;哦。)

但如果你写成了这样

while(循环的前提条件);
{循环语句     //这里的循环语句失去了他该有的工作
}

那么恭喜你,你得到了一个没有循环语句的循环。

为什么?

以下为个人见解:你可以认为   ; 指的是一个空的语句,根据上一条所说,这个分号没有被  {}  括住,在while身后没有紧跟   {}   的情况下while会默认自己身后的第一句话为循环体,但是他身后只有一个  ;也就什么都不会发生了。随后如果while循环结束,系统会按正常顺序读到 “循环语句” ,但是只执行一遍。

在while()后面直接添加;这种情况很可能导致程序出错,比如下面的程序会发生什么?思考一下?

int a=3;
while(a>2);
a--;             //a--等于a=a-1(和--a有差别,但这里不做解释)

————————

没错,它会无限循环,因为判断a大于2是永远成立的,后面的  ;不会对a的值进行修改(当然它啥也不会做)。你会发现你的程序在这一步卡住了,并且永远留在了这里。

那么有人会想,既然它会无限循环,那么你之前说while();循环结束不就错了吗?

这里就要联系到while判定的性质了

while的判定

while的条件判断,只会判断是否为0或1!

在while的眼里,他只认识两个数,一个是0,一个是1。当条件正确时,while会认为它是1,比如while(1),while(3)(只有一个数字当然是正确的),while(2>1),甚至是while(!0)。在while眼中,他看到的就是while(1)。

但是如果是错误的比如while(2<1)或者直接为while(0),在while眼中都是while(0),然后会结束while的循环

所以说

int a=3;
while(a--);    //a--等于a=a-1在这同样不做深入解释

它会在a减为0时退出循环。

现在,我们的while结束了。就来看看do—while吧

do—while

在学过while之后,do—while就很简单了。和while的区别是,do—while会先进行一次循环,再判断条件是否成立。

图像是这样的:

除了do—while会先进行一次循环语句再判断条件是否成立之外,其他方面与while相同。

do—while的使用格式是这样的:

do
{
循环语句
}
while(条件);

和while一样,在do后面只有一条语句时可以不用加   {}

注意:在这里while加了分号 !

do—while后面的分号是必要的(如果你想过编译的话),他意味着do—while函数的结束。

以下为个人见解(我猜的):如果不用加分号来对while进行处理,在进行阅读时可能会因为没有看见do而错误的以为下方的while为单独的一个while语句。而进行错误解读。(毕竟一个身后跟着;的while挺引人注目的)

最后,让我们一起愉快的拥抱c语言大家庭吧

//(因为本人为c语言新手,如有错误,还请各位手下留情 )

C语言初学者while/do—while语法学习笔记相关推荐

  1. MySQL语法学习笔记

    MySQL语法学习笔记 学习之道,非尽心竭力者不能进也!我是小七黛,欢迎查看我的笔记,有问题欢迎交流探讨. SQL是一种结构查询语言,用于查询关系数据库的标准语言,包括若干关键字和一致的语法,便于数据 ...

  2. Verilog HDL 语法学习笔记

    今天给大侠带来Verilog HDL 语法学习笔记,话不多说,上货. 关于详细的VHDL语法以及Verilog HDL语法可参见往期文章. 一周掌握 FPGA VHDL Day 7 暨汇总篇 一周掌握 ...

  3. VHDL语法学习笔记:一文掌握VHDL语法

    今天给大侠带来FPGA 之 VHDL 语法学习笔记,话不多说,上货. VHDL语法学习笔记 一.VHDL简介 1.1 VHDL 的历史 VHDL 的 英 文 全 名 是 Very-High-Speed ...

  4. Python基础语法学习笔记

    Python基础语法学习笔记 想淘宝省钱看我简介,博客www.liangxin.name (一) 一.Print()函数 1.数字可以直接输出,无需加引号 只能理解数字,却读不懂文字.因为数字和数学运 ...

  5. web阶段概念语法----学习笔记

    web学习笔记大纲 一.Oracle数据库 1.概念 2.sql命令(增删改查) 1)select命令 2)insert命令 3)update命令 4)delete命令 3.函数--- oracle提 ...

  6. 《全面掌握Linux C语言嵌入式系统移植教程》学习笔记(Liunx速查简明)

    全面掌握Linux C语言嵌入式系统移植教程学习笔记(Liunx速查简明) 笔记前言: P3: shell命令简明 P4: vi /vim编辑器入门 P5:vi /vim编辑器扩展 P8: gcc编译 ...

  7. 程序设计语言编译原理_编译原理学习笔记(二):高级程序设计语言

    高级程序设计语言 一.语言概述 1.1 语法 v.s. 语义 程序本质上是一定字符集上的字符串 语法:一组规则,用它可以形成和产生一个合式(well-formed)的程序 定义了程序的形式结构 定义语 ...

  8. x%3e=y%3e=z的c语言表达式,我的C语学习笔记-C语言教程(三).doc

    我的C语学习笔记- C语言教程(三) C语言教程---第一章: C语言概论 C语言教程---第二章: 数据类型.运算符.表达式 C语言教程---第三章: C语言程序设计初步 C语言教程---第四章: ...

  9. R语言实现关联规则与推荐算法(学习笔记)

    R语言实现关联规则 笔者前言:以前在网上遇到很多很好的关联规则的案例,最近看到一个更好的,于是便学习一下,写个学习笔记. 推荐算法中 物品-物品用关联规则: 人物-物品用协同过滤: 人-人用社会网络分 ...

最新文章

  1. redis cluster 添加 删除 重分配 节点
  2. 与视频服务器相比,流媒体服务器有什么优势?
  3. python3华丽gui_Python3.7 - tkinter Gui 03 Options的用法
  4. 朴素容斥原理[ZJOI2016][bzoj4455]小星星
  5. Java关键字—instanceof
  6. Mr.J--JS学习(Clone)
  7. python打开控制台运行_如何在IPython控制台中默认运行文件而不是终端?
  8. android执行命令行取得结果,Android调用shell脚本并取得输出
  9. 标准h5的定位_H5地理定位
  10. 1、使用Keras构建图像分类器
  11. OpenGL采样贴图显示不出来
  12. MYSQL下载及安装完整教程
  13. 鸡兔同笼编程语言c,鸡兔同笼用c语言编程
  14. 老毛桃PE工具安装32位win7系统ISO镜
  15. (高小德用车)高仿滴滴/快的应用源码
  16. 音频/面板资源管理器_AudioPanelManager
  17. 主板没有rgb接口怎么接灯_DIY只为玩游戏?主板配上RGB灯让机箱发光
  18. android pad office,安卓平板电脑也可以使用Office应用了
  19. Matlab外部程序接口
  20. 视频号9大变现模式,总有一个适合你

热门文章

  1. 如何打造实时性的弹窗?
  2. 本周(10.29-11.2)热门岗位|互联网
  3. 数据中心网络设计思路图,数据中心网络设计方案
  4. 2023.05.30-ubuntu22.04多卡服务器卸载cuda重新安装(踩坑不断版本)
  5. 给13寸macbook pro升级ssd,并重装双系统.
  6. SQL的from_unixtime函数的用法实例
  7. Linux Shell多进程并发以及并发数控制
  8. Nginx限制并发连接数和带宽
  9. Android DNS之查询结果缓存
  10. 网络前端第六次培训笔记(js)