1. 程式人生 > >c++語法之switch語句

c++語法之switch語句



       原創文章,轉載請註明出處,謝謝!       
       作者:清林,部落格名:飛空靜渡

switch語句在c或c++語言中是非常普通的一個語句了,而且我們也是經常用到的。而且我們使用的switch語句都是和case、default、break等語句一起使用的。

switch語句的使用可以非常的簡單,也可以非常的複雜,所以你可以看到下面的一些另類的使用。

首先問一下的是:你知道switch文法是怎麼定義的嗎?

學過《編譯原理》的人都知道,我們要寫某個語言的編譯器就得定義這個語言的一個文法,這樣我們才可以根據定義好的文法來寫編譯器,而c、c++的switch語句的文法的定義很簡單,如下:

switch(expression) statement

看下上面定義的文法,switch語句就是switch關鍵字後面接左括號,之後是表示式,之後是右括號,後面在跟語句塊。

所以這個switch語句是很簡單的,那麼我們可以根據這個文法寫下下面這樣的程式碼:

編譯輸出:i=3

我們看到上面的程式碼在使用switch時是很簡單的使用的:

switch(表示式)

    語句

我們看到switch表示式中的i沒有匹配,所以輸出的i的值還是3。

由於switch後面是個語句塊,所以我們的表示式就可以寫成這樣:

switch(i)

{

    i=2;

}

這樣用{}來框取一個語句塊。


我們想要i=2;這個語句,就加上default:

switch(i)

{

   default:

        i=2;

}

switch語句的文法的定義是簡單的,但statement語句塊的定義就不那麼簡單的了,我們可以非常靈活的使用這個語句塊來非常靈活的使用switch語句。

我們看下switch和case使用的情況:

switch(i)

{

   default:

        i=2;

    case 1:

        printf("a=1/n");

        break;

}

case後面一定是要一個整數,或是可以轉換成整數的物件。但case卻不一定要在語句塊中的第一層,所以我們可以寫成這樣:

編譯輸出:i = 8;

由於case的實現,其實從彙編角度來說就是跳轉語句,所以可以使用下面那樣風格的程式碼:

編譯輸出:p = 2, pi = 3

雖然,上面的程式碼沒有什麼實際的意義,但是也可以看到另類的switch語句的用法,switch語句的用法關鍵就是後面的語句塊,這個語句塊是可以靈活的運用以達到靈活使用switch語句的目的。

相關推薦

c++語法switch語句

       原創文章,轉載請註明出處,謝謝!               作者:清林,部落格名:飛空靜渡 switch語句在c或c++語言中是非常普通的一個語句了,而且我們也是經常用到的。而且我們使用的switch語句都是和case、default、break等語句一

Java_基礎語法switch語句

... rgs 基礎 選擇 default 表達 nth 語句 short 1 /*switch 語句 2 格式: 3 switch(表達式) 4 { 5 case 取值1: 6 執行語句; 7

C++學習分支語句和邏輯運算子(switch語句,break和continue語句

1.switch語句 switch(integer-expression) { case label1:statement(s) case label2:statement(s) ....... default :statement(s

Java進擊C#——語法多線程

明顯 源碼 max 更多 sta 關於 如何使用 關系 中文 本章簡言 上一章中筆者對C#一些獨有的語法點進行講解,相信也可以看C#的一些神奇之處。那麽本章主要是放在多線程這方面的知識。不管是C#還是JAVA在開發過程或多或少都會用到關於多線程的編程。當然筆者不

Java進擊C#——語法ADO.NET

parameter stmt 深入 真的 讀者 方式 對他 新建 文本 本章簡言 上一章講到關於C#語法的基礎部分。了解相關的基礎部分之後我們就要去了解一下C#是什麽樣子訪問數庫的。C#把訪問數據庫這一部分的知識點叫作ADO.NET。即是JAVA常常講到的JDB

c語言for語句

main spa putc return c++ oid \n urn get #include <stdio.h> int main(void) { int i; for (i = 0; i < 10; i++) {

Python基本語法控制語句

  控制語句的型別 控制語句型別 說明 條件控制語句 使用保留字元if、elif、else來控制分支,判斷的內容為邏輯表示式。 條件控制語句首先判斷一個條件是否滿足,滿足則執行一系列語句,如果不

C語言中switch語句

在多分支選擇中,用if語句程式會冗長,可讀性低,用switch更合適。 switch語句格式: switch(表示式) { case 常量1:語句1;[break;] case 常量2:語句2;[break;] : : : : default: 語句n } 注意 : 1、當(表示式)

C語言 分支語句與迴圈語句粗見

今天讓我們走進C語言中的兩個基本語句的世界中,C語言呢,一共有兩大種語句,即分支語句和迴圈語句,他們的身影幾乎遍插整個程式設計界,是最最基本的語法知識。所以不可小看他們!接下來先看看分支語句: 分支語句(選擇語句) 分支語句又稱選擇語句,那麼先看看語句是什麼? 語句:以分號

小總結switch語句——範圍劃分

碰到的題目如下: 程式設計實現:為某個學生寫評語,要求從鍵盤輸入該學生的學號和百分制成績,並將百分制成績轉換成4級制輸出。百分之成績與四級制等級的對應關係如下,輸入和輸出要求如下。 等級 分數段 A 100~90 B

C++學習分支語句和邏輯運算子(if語句、邏輯表示式、字元函式庫(cctype)和?:運算子)

1.當C++程式必須決定是否執行某個操作時,通常使用if語句來實現操作。if有兩種格式:if和if else. if(test-condition) statement 如果測試條件為true,則if語句將載入程式執行語句或語句塊;如果條件是false,程式將跳

c/c++排坑(3) -- c/c++中的switch語句

switch語句的簡單介紹 一個 switch 語句允許測試一個變數等於多個值時的情況。每個值稱為一個 case,且被測試的變數會對每個 switch case 進行檢查。 switch(expression){ case constant-expression

C語言 1. switch語句的使用2.輸出菱形3..求出0~999之間的所有”水仙花數“,並輸出

浮點型和零相比? #define EXP 0.000000……1 在不同作業系統下程式碼結果可能不一樣,所以定義一個精度 switch語句的使用: int main() { int day=0; scanf("%d",&day); switch(d

golang教程switch語句

switch語句 switch是一個條件語句,它計算表示式並將其與可能的匹配列表進行比較,並根據匹配執行程式碼塊。它可以被認為是編寫多個if else子句的慣用方法。 讓我們從一個簡單的例子開始,該例子將手指號作為輸入並輸出該手指的名稱。 例如1是拇指,2是

C++中的switch語句的break問題

今天筆試360了,再次遇到這個簡單但是又容易出錯的問題。 首先看下正確的寫法: int main() { int i; for(i=0;i<3;i++) { switch(i)

go語音基礎switch語句 和 fallthrough 用途

Go裡面switch預設相當於每個case最後帶有break,匹配成功後不會自動向下執行其他case,而是跳出整個switch, 但是可以使用fallthrough強制執行後面的case程式碼:示例1: package main import "fmt" func main() { n

Objective-C語法NSSet和NSMutableSet

NSSet和NSMutableSet是無序的, 但是它保證資料的唯一性。當插入相同的資料時,不會有任何效果。從內部實現來說是hash表,所以可以常數時間內查詢一個數據。 ps: 散列表(Hash table,也叫雜湊表),是根據關鍵碼值(Key value)而直接進行訪問的資料結構。也就是說,它通過把

C#語法{0:C}及其擴充套件

在學習ASP.NET的過程中遇到了{0,C}這樣的小知識點,好奇便研究了一下,記錄下來。 C#語法,按貨幣格式輸入第一引數。所用程式碼為{0,C}。C是Currency的簡稱。 除次之外還有一些別的格式: D或d Decimal 十進位制格式 E或e Exponent

C語言基本語句

本文copy百度百科。 C語言之語句型別 語句是一個程式邏輯的體現,它描述了程式。 從程式流程的角度來看,程式可以分為三種基本結構, 即順序結構、分支(選擇)結構、迴圈結構。 這三種基本結構可以組成所有的各種複雜程式。 C語言提供了多種語句來實現這些程式結構。 C程式的執

C語言利用switch語句實現輸入一個字母,輸出它前後緊挨著的字母

題目來源:大工慕課 連結 作者:Caleb Sung 題目要求 從螢幕上輸入一個字元,如果不是英文字母,輸出“這不是英文字母,請重新輸入”,然後重新輸入字元,如果是英文字母,以大寫字母的形式輸出字母表中它前面的字元和後面的字元,如果輸入的字元為‘a