C语言中不同类型的循环(Different types of loops in C)

C语言中有三种类型的循环:for,while,do-while。

while循环先判断循环条件。

while (condition)
{
    //gets executed after condition is checked
}

do-while循环先执行循环体重的语句,再判断循环条件。

do
{
    //gets executed at least once
} while (condition);

for循环可以一行中初始化一个计数变量,设置一个判断条件,和计数变量的自增。

for (int x = 0; x < 100; x++)
{
    //executed until x >= 100
}

归根到底它们都是循环,但如何执行这些循环还有一些灵活的变化。


for循环看起来最舒服,因为他最精确。

for (int x = 0; x < 100; x++)
{
    //executed until x >= 100
}

为了将上面的for循环改写成while循环,你需要这样:

int count = 0;
while (count < 100)
{
    //do stuff
    count++;
}

这种情况下,也许你会在count++;下面添加一些别的内容。这样count在什么地方自增就要考虑清楚,实在逻辑比较之后还是之前?在for循环中计数变量每一次自增都在下一次迭代之前,这会让你的代码保持某种一致性。

break与continue语句

break语句的作用是终止当前的循环(直接跳到循环体外),当前循环的所有迭代都会停止。

//will only run "do stuff" twice
for (int x = 0; x < 100; x++)
{
    if (x == 2)
    {
        break;
    }
    //do stuff
}

continue语句的作用是终止当前的迭代,直接跳到下次迭代。

//will run "do stuff" until x >= 100 except for when x = 2
for (int x = 0; x < 100; x++)
{
    if (x == 2)
    {
        continue;
    }
    //do stuff
}
时间: 2024-08-30 00:07:49

C语言中不同类型的循环(Different types of loops in C)的相关文章

程序猿之---C语言细节26(C语言中布尔类型、continue细节、sizeof举例、strlen举例)

主要内容:C语言中布尔类型.continue细节.sizeof举例.strlen举例 一.布尔类型 可能很多人不知道现在C语言已经有了布尔类型:从C99标准开始,类型名字为"_Bool" 在C99标准之前我们常常自己模仿定义布尔类型,常见有以下几种方式: 1.方式一 #define TURE 1 #define FALSE 0 2.方式二 typedef enum {false, true} bool; 3.方式三 typedef int bool 闲int浪费内存,对内存敏感的程序使

Go语言中不同类型切片之间的相互转换

将 []T 切片转换为 []byte 类似C语言中将其他类型的数组转换为char数组: func ByteSlice(slice interface{}) (data []byte) { sv := reflect.ValueOf(slice) if sv.Kind() != reflect.Slice { panic(fmt.Sprintf("ByteSlice called with non-slice value of type %T", slice)) } h := (*ref

c#语言中的三种循环

什么是编程 编程就是使用一种程序设计语言编写程序代码,让计算机解决某个问题的过程.根据这个定义来看,根据使用的程序设计语言不同,编写的程序就不同. 关于c#语言: C#是一种最新的.面向对象的编程语言.它使得程序员可以快速地编写各种基于Microsoft .NET平台的应用程序,Microsoft .NET提供了一系列的工具和服务来最大程度地开发利用计算与通讯领域. 正是由于C#面向对象的卓越设计,使它成为构建各类组件的理想之选--无论是高级的商业对象还是系统级的应用程序.使用简单的C#语言结构

认识C#语言中的几种循环命令

if判断 书写格式: if(条件1){ 代码1} else if(条件2){ 代码2}else{ 代码N} 说明:如果条件1成立,则执行代码1,否则判断条件2是否成立,如果成立,则执行代码2:如果以上条件都不成立,执行代码N 其中else if 可以重复任意次数 条件1.条件2都为bool类型 代码1.代码2.代码N任意数量,任意功能 若代码2只有一句代码,大空号可以省略 switch 选择 代码格式: switch(变量或表达式){ case值1 代码1 break: case值2 代码2 b

Lua中的类型与值

[基础介绍] Lua是一种动态类型的语言.在语言中没有类型定义的语法,每个值都带有其自身的类型信息.在Lua中有8中基本类型,分别是: nil(空)类型 boolean(布尔)类型 number(数字)类型 string(字符串)类型 userdata(自定义类型) function(函数)类型 thread(线程)类型 table(表)类型 以上是Lua中的8中基本类型,我们可以使用type函数,判断一个值得类型,type函数返回一个对应类型的字符串描述.例如: local iValue =

C语言中变量的存储类型

在C语言中,对变量的存储类型说明有以下四种: auto 自动变量register   寄存器变量extern 外部变量static   静态变量 自动变量和寄存器变量属于动态存储方式,外部变量和静态变量属于静态存储方式. 在介绍了变量的存储类型之后,可以知道对一个变量的说明不仅应说明其数据类型,还应说明其存储类型. 因此变量说明的完整形式应为:存储类型说明符数据类型说明符变量名,变量名-:例如: static int a,b;      说明a,b为静态类型变量 auto char c1,c2;

【C语言基础】unsigned short类型用于循环的一个难点

我在我的知识星球:“C语言解惑课堂”里的第一篇提出一个问题:[第1篇][C语言基础][unsigned short类型用于循环的一个难点]要查看更多的C语言难点解析或者需要提问的同学,微信扫扫文末我的星球二维码加入吧! 一.[问题] 同学们,今天来道C语言比较有意思的题,C程序代码见下图. for循环中我给了变量para一个初始值1,也让para自增1,但是没有指定for循环结束的条件.你觉得有问题吗?会不会是一个无穷尽的循环?如果有问题你打算怎么修改呢? 二.[解惑] 这个循环是会终止的,不会

c语言中的结构体指针类型的cast

1.我们在c语言中会经常碰到强制类型转换. 在这,我介绍一种结构pointer类型转换,但是有前提(有点类似于c++中的继承中的子父对象的cast). 简单的介绍一下: 首先我们要知道一个结构的指针,并且 在这个结构体中,第一个结构成员必须也是一个结构体(最好是结构体类型). 那么我们可以这个结构体指针转换为指向这个结构体中第一个成员结构体的指针. 直接看代码: ************************************ /* struct transform for struct

C语言中两个相同类型的结构体变量之间是可以相互直接赋值的

C语言中,在相同类型的变量间赋值时是直接内存复制的,即将他们的内存进行复制,而两个同类型的结构体变量属于同一种变量,所以赋值时是按照他们的内存分布来直接拷贝的.所以,在C语言中两个相同类型的结构体变量之间是可以相互赋值的.但是要注意指针的浅层复制问题. 下面是一个简单的验证代码: #include <stdio.h> #include <stdlib.h> #include <string.h> #include <stdlib.h> struct test