循环结构 案例分析

怎样才能知道循环是否提前结束了

循环通常依赖于一个或多个变量,你可以在循环外检查这些变量,以确保循环被正确执行。请看下例:

int x
char * cp[REQUESTED_BLOCKS]
/ * Attempt (in vain, I must add... )to
     allocate 512 10KB blocks in memory.  * /
for (x = 0;  x<REQUESTED_ BLOCKS ; x++ )
{
     cpi[x]= (char * ) malloc (10000,1)
     if (cp[x]= = (char * ) NULL)
           break
}
/ * If x is less than REQUESTED-BLOCKS,
     the loop has ended prematurely.  * /
if (x<REQUESTED_BLOCKS)
  printf ("Bummer ! My loop ended prematurely ! \n" );
 
注意:如果上述循环执行成功,它一定会循环512次。紧接着循环的if语句用来测试循环次数,从而判断循环是否提前结束。如果变量x的值小于512,就说明循环出错了。

在C语言中 除了for语句中之外,在哪些情况下还要使用逗号运算符

逗号运算符通常用来分隔变量说明、函数参数、表达式以及for语句中的元素。

下例给出了使用逗号的多种方式:
#include <stdio.h>
#include <stdlib.h>
void main(void);
void main ()
{
     / * Here, the comma operator is used to separate
          three variable declarations.  * /
     int i, j, k;
     / * Notice how you can use the comma operator to perform
          multiple initializations on the same line.  * /
     i=0, j=1, k=2;
printf("i= %d, j=%d, k= %d\n", i, j, k);
     / * Here, the comma operator is used to execute three expressions
          in one line: assign k to i, increment j, and increment k.
          The value that i receives is always the rigbtmost expression.  * /
     i= ( j++, k++ );
     printf("i=%d, j=%d, k=%d\n", i, j, k);
     / * Here, the while statement uses the comma operator to
          assign the value of i as well as test it.  * /
     while (i=(rand() % 100), i !=50)
        printf("i is %d, trying again... \n", i)
     printf ("\nGuess what? i is 50!\n" )
}

请注意下述语句:
     i:(j++,k++)
这条语句一次完成了三个动作,依次为:
  1. 把k值赋给i。这是因为左值(lvaule)总是等于最右边的参数,本例的左值等于k。注意,本例的左值不等于k++,因为k++是一个后缀自增表达式,在把k值赋给j之后k才会自增。如果所用的表达式是++k,则++k的值会被赋给i,因为++k是一个前缀自增表达式,k的自增发生在赋值操作之前。
  2. j自增。
  3. k自增。
此外,还要注意看上去有点奇怪的while语句:
   while (i=(rand() % 100), i !=50)
   printf("i is %d, trying again... \n");

这里,逗号运算符将两个表达式隔开,while语句的每次循环都将计算这两个表达式的值。逗号左边是第一个表达式,它把0至99之间的一个随机数赋给i;第二个表达式在while语句中更常见,它是一个条件表达式,用来判断i是否不等于50。while语句每一次循环都要赋予i一个新的随机数,并且检查其值是否不等于50。最后,i将被随机地赋值为50,而while语句也将结束循环。

请参见:
1、运算符的优先级总能保证是“自左至右”或“自右至左”的顺序吗?
2、++var和var++有什么区别?

什么是C语言局部程序块(local block)

局部程序块是指一对大括号({})之间的一段C语言程序。一个C函数包含一对大括号,这对大括号之间的所有内容都包含在一个局部程序块中。if语句和swich语句也可以包含一对大括号,每对大括号之间的代码也属于一个局部程序块。

此外,你完全可以创建你自己的局部程序块,而不使用C函数或基本的C语句。
  1. 你可以在局部程序块中说明一些变量,这种变量被称为局部变量,它们只能在局部程序块的开始部分说明,并且只在说明它的局部程序块中有效。
  2. 如果局部变量与局部程序块以外的变量重名,则前者优先于后者。

下面是一个使用局部程序块的例子:
#include <stdio.h>
void main(void);
void main()
{
     / * Begin local block for function main() * /
     int test_ var = 10;
     printf("Test variable before the if statement: %d\n", test_var);
     if (test_var>5)
     {
           / * Begin local block for "if" statement * /
           int test_ var = 5;
           printf("Test variable within the if statement: %d\n",
                   test_var);
           {
                 / * Begin independent local block (not tied to
                      any function or keyword) * /
                  int test_var = 0;
                  printf (
                 "Test variable within the independent local block: %d\n",
                 test_var)
      }
      / * End independent local block * /
      printf ("Test variable after the if statement: %d\n", test_var);
}
/*End local block for function main () * /

上例产生如下输出结果:
Test variable before the if statement: 10
Test variable within the if statement: 5
Test variable within the independent local block:0
Test variable after the if statement: 10

注意:在这个例子中,每次test_var被定义时,它都要优先于前面所定义的test_var变量。此外还要注意,当if语句的局部程序块结束时,程序重新进入最初定义的test_var变量的作用范围,此时test_var的值为10。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/450469.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

工作中常用的但是又容易忽略的问题

个人平时总结 Document 对象 每个载入浏览器的 HTML 文档都会成为 Document 对象。 Document 对象使我们可以从脚本中对 HTML 页面中的所有元素进行访问。 提$(document)是一个选择器&#xff0c;选中的是整个html所有元素的集合示&#xff1a;Document 对象是 Window 对象的一…

JAVA经典面试题汇总(保存这篇就够了)

一. java基础篇 1.final 关键字的作用? 被 final 修饰的类不可以被继承。被 final 修饰的方法不可以被重写。被 final 修饰的变量不可以被改变&#xff0c;如果修饰引用&#xff0c;那么表示引用不可变&#xff0c;引用指向的内容可变。被 final 修饰的方法&#xff0c;JVM …

Angular5 *ngIf 和 hidden 的区别

问题 项目中遇到一个问题&#xff0c;有一个过滤查询的面板&#xff0c;需要通过一个展开折叠的button&#xff0c;来控制它的show 和 hide。这个面板中&#xff0c;有一个Select 组件&#xff0c;一个 input 查询输入框。 原来代码是&#xff1a; <div class"accordio…

ZooKeeper学习-- Zookeeper简单介绍

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 一、分布式协调技术 在给大家介绍ZooKeeper之前先来给大家介绍一种技术——分布式协调技术。那么什么是分布式协调技术&#xff1f;那么…

选择结构 案例分析

C语言goto&#xff0c;longjmp()和setjmp()之间有什么区别 goto语句实现程序执行中的近程跳转(local jump)&#xff0c;longjmp()和setjmp()函数实现程序执行中的远程跳转(nonlocaljump&#xff0c;也叫farjump)。通常你应该避免任何形式的执行中跳转&#xff0c;因为在程序中…

Python基础班---第一部分(基础)---Python基础知识---第一个Python程序

01. 第一个 HelloPython 程序 1.1 Python 源程序的基本概念 Python 源程序就是一个特殊格式的文本文件&#xff0c;可以使用任意文本编辑软件做 Python 的开发Python 程序的 文件扩展名 通常都是 .py1.2 演练步骤 在桌面下&#xff0c;新建 Python基础1 目录在 Python基础1 目录…

面试题-集合

1.JAVA 中数组和集合的区别 &#xff1f; &#xff08;1&#xff09;数组的长度是固定的&#xff0c;而集合长度是可以改变的。 &#xff08;2&#xff09;数组可以储存基本数据类型和引用数据类型&#xff0c;而集合只能储存引用数据类型&#xff08;也就是对象&#xff09;…

七牛云上传视频如何有效做到节省空间

在上传视频的时候&#xff0c;我们通常会保存到第三方【七牛云】平台。不过大多数程序员在系统后台上传视频后&#xff0c;一般都是保存到了本地&#xff0c;如果视频非常多或者视频容量特别大的情况下&#xff0c;那么我们的服务器迟早有一天会满&#xff0c;为了节省空间&…

运算符的优先级总能起作用吗?

有关运算符优先级的规则稍微有点复杂。在大多数情况下&#xff0c;这些规则确实是你所需要的&#xff0c;然而&#xff0c;有人也指出其中的一些规则本来是可以设计得更好的。让我们快速地回顾一些有关内容&#xff1a;“运算符优先级”是这样一些规则的集合——这些规则规定了…

按钮交互loading ---- 转圈圈 加载

按钮loading状态自定义选项&#xff08;功能&#xff09;&#xff1a; 可以在元素上添加 data-am-loading 来设置选项&#xff1a; spinner 加载动画图标&#xff0c;适用于支持 CSS3 动画、非 input 元素&#xff0c;写图标名称即可&#xff1b;loadingText 加载时显示的文字&…

面试题-线程

1.什么是线程 &#xff1f;线程和进程的区别 &#xff1f; 线程是操作系统能够进行运算调度的最小单位&#xff0c;它被包含在进程之中&#xff0c;是进程中的实际运作单位。而进程是系统中 正在运行的一个程序&#xff0c;程序一旦运行就是进程。 区别&#xff1a;&#xf…

区块链入门教程

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 区块链&#xff08;blockchain&#xff09;是眼下的大热门&#xff0c;新闻媒体大量报道&#xff0c;宣称它将创造未来。 可是&#xf…

响应式面包屑菜单

在线演示 本地下载 转载于:https://www.cnblogs.com/qixidi/p/10064991.html

5个能提高你工作效率的Excel技巧

Excel的应用在工作中还是十分广泛的&#xff0c;那么下面小编就来为大家分享5个Excel技巧来帮助大家轻松提高工作效率。1. 不用数据验证或数据有效性&#xff0c;自动生成下拉列表方法&#xff1a;按【Alt↓】组合键注意点&#xff1a;光标要定位在已有数据区域的下一个单元格&…

很好的推荐书籍

五百本编程书籍推荐【信息化类】 书号书名作者出版时间定价对应页码TP02041企业资源计划&#xff08;ERP&#xff09;教程罗鸿2006-1&#xffe5;28.00—TP02031ERP理论、方法与实践周玉清 等2005-12&#xffe5;39.00—TP01059ERP原理设计实施&#xff08;第3版&#xff09;罗…

消息推送

我有一个运动类app软件,它的服务器是集群式的&#xff0c;有N台服务器。现在我想在app上开发一个功能&#xff0c;在每天的晚上11点进行消息推送&#xff0c;他会推送今天走多少步&#xff0c;是否健康&#xff0c;明天至少走多少步。请问如何11点能准时触达到用户&#xff1f;…

day10:函数进阶

1&#xff0c;函数的命令空间&#xff08;内置命名空间&#xff0c;全局命名空间&#xff0c;局部命名空间&#xff09;&#xff0c;内置大于全局大于局部 2&#xff0c;内置命名空间&#xff0c;就是Python解释器一启动就可以使用的名字&#xff0c;存储在内置命名空间中&…

mysql导入source注意点

mysql的导入导出要注意字符集&#xff0c;防止查询乱码&#xff01; 导入前设置字符集 set names utf8; //导入指定编码source /xxx.sqlcommit;

哔哩哔哩修改视频速度

按住f12,打开控制台&#xff0c;先输入 const video document.querySelector("video"); video.play() // 开始 video.pause() // 暂停 video.playbackRate3 // 三倍速

编译预处理

C语言编译中&#xff0c;什么时候应该使用32位编译程序? 32位编译程序应该在32位操作系统上使用。由32位编译程序生成的32位程序比16位程序运行得更快&#xff0c;这正是任何32位的东西都很热门的原因。有那么多不同版本的Microsoft Windows&#xff0c;它们和哪种编译程序组成…