C语言初学者while/do—while语法学习笔记
(因为是刚接触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语法学习笔记相关推荐
- MySQL语法学习笔记
MySQL语法学习笔记 学习之道,非尽心竭力者不能进也!我是小七黛,欢迎查看我的笔记,有问题欢迎交流探讨. SQL是一种结构查询语言,用于查询关系数据库的标准语言,包括若干关键字和一致的语法,便于数据 ...
- Verilog HDL 语法学习笔记
今天给大侠带来Verilog HDL 语法学习笔记,话不多说,上货. 关于详细的VHDL语法以及Verilog HDL语法可参见往期文章. 一周掌握 FPGA VHDL Day 7 暨汇总篇 一周掌握 ...
- VHDL语法学习笔记:一文掌握VHDL语法
今天给大侠带来FPGA 之 VHDL 语法学习笔记,话不多说,上货. VHDL语法学习笔记 一.VHDL简介 1.1 VHDL 的历史 VHDL 的 英 文 全 名 是 Very-High-Speed ...
- Python基础语法学习笔记
Python基础语法学习笔记 想淘宝省钱看我简介,博客www.liangxin.name (一) 一.Print()函数 1.数字可以直接输出,无需加引号 只能理解数字,却读不懂文字.因为数字和数学运 ...
- web阶段概念语法----学习笔记
web学习笔记大纲 一.Oracle数据库 1.概念 2.sql命令(增删改查) 1)select命令 2)insert命令 3)update命令 4)delete命令 3.函数--- oracle提 ...
- 《全面掌握Linux C语言嵌入式系统移植教程》学习笔记(Liunx速查简明)
全面掌握Linux C语言嵌入式系统移植教程学习笔记(Liunx速查简明) 笔记前言: P3: shell命令简明 P4: vi /vim编辑器入门 P5:vi /vim编辑器扩展 P8: gcc编译 ...
- 程序设计语言编译原理_编译原理学习笔记(二):高级程序设计语言
高级程序设计语言 一.语言概述 1.1 语法 v.s. 语义 程序本质上是一定字符集上的字符串 语法:一组规则,用它可以形成和产生一个合式(well-formed)的程序 定义了程序的形式结构 定义语 ...
- x%3e=y%3e=z的c语言表达式,我的C语学习笔记-C语言教程(三).doc
我的C语学习笔记- C语言教程(三) C语言教程---第一章: C语言概论 C语言教程---第二章: 数据类型.运算符.表达式 C语言教程---第三章: C语言程序设计初步 C语言教程---第四章: ...
- R语言实现关联规则与推荐算法(学习笔记)
R语言实现关联规则 笔者前言:以前在网上遇到很多很好的关联规则的案例,最近看到一个更好的,于是便学习一下,写个学习笔记. 推荐算法中 物品-物品用关联规则: 人物-物品用协同过滤: 人-人用社会网络分 ...
最新文章
- redis cluster 添加 删除 重分配 节点
- 与视频服务器相比,流媒体服务器有什么优势?
- python3华丽gui_Python3.7 - tkinter Gui 03 Options的用法
- 朴素容斥原理[ZJOI2016][bzoj4455]小星星
- Java关键字—instanceof
- Mr.J--JS学习(Clone)
- python打开控制台运行_如何在IPython控制台中默认运行文件而不是终端?
- android执行命令行取得结果,Android调用shell脚本并取得输出
- 标准h5的定位_H5地理定位
- 1、使用Keras构建图像分类器
- OpenGL采样贴图显示不出来
- MYSQL下载及安装完整教程
- 鸡兔同笼编程语言c,鸡兔同笼用c语言编程
- 老毛桃PE工具安装32位win7系统ISO镜
- (高小德用车)高仿滴滴/快的应用源码
- 音频/面板资源管理器_AudioPanelManager
- 主板没有rgb接口怎么接灯_DIY只为玩游戏?主板配上RGB灯让机箱发光
- android pad office,安卓平板电脑也可以使用Office应用了
- Matlab外部程序接口
- 视频号9大变现模式,总有一个适合你
热门文章
- 如何打造实时性的弹窗?
- 本周(10.29-11.2)热门岗位|互联网
- 数据中心网络设计思路图,数据中心网络设计方案
- 2023.05.30-ubuntu22.04多卡服务器卸载cuda重新安装(踩坑不断版本)
- 给13寸macbook pro升级ssd,并重装双系统.
- SQL的from_unixtime函数的用法实例
- Linux Shell多进程并发以及并发数控制
- Nginx限制并发连接数和带宽
- Android DNS之查询结果缓存
- 网络前端第六次培训笔记(js)