循環結構 案例分析

怎樣才能知道循環是否提前結束了

循環通常依賴于一個或多個變量,你可以在循環外檢查這些變量,以確保循環被正確執行。請看下例:

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.pswp.cn/news/450469.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/450469.shtml
英文地址,請注明出處:http://en.pswp.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;它們和哪種編譯程序組成…