switch在C 與C 中的一些差異

2021-09-02 16:23:38 字數 1554 閱讀 5233

參考鏈結

[url]

平時碰到分支條件判斷最常用的是if else語句,不過有時要是分支條件太多用switch就更直觀,方便一點.先舉兩個簡單的例子.

[color=red][b]c++:[/b][/color]

int num = 2;

switch(num)

[color=red][b]c#:[/b][/color]

int num = 2;

switch (num)

c++,c#中swith的用法幾乎是一模一樣了.只有一些細小的差別,c#在c++的基礎上做了一點改進.

[color=red][b]區別:[/b][/color]

1. c++中switch()括號中的變數型別只能是整形或者能預設轉換成整形.比如[color=red]int,long,bool,char,enum[/color].(當然表示式也行,只要結果符合前面條件).但float,double,string就不行.另外自定義的型別,比如某個class,如果類中有運算子過載,class能預設轉換成int.那也可以.不過一般情況很少會在switch中用到自定義的型別吧

c#中switch()括號中的變數型別可以是[color=red]byte,short,int,long,bool,enum[/color]另外還有string,這個在c++中是不行的.跟c++一樣,可以用表示式,但float,double是不行的.自定義型別如可轉換也行.

using system;

using system.collections.generic;

using system.linq;

using system.text;

using system.threading.tasks;

namespace ch04ex03

console.writeline("hello !", name);

console.readkey();}}

}

2. [color=red]c++中break是可以省略的[/color].但這樣容易造成乙個問題.如果沒有break當某個分支符合條件執行完了後,會接著執行後面的分支.在上面的例子中,如果break全部去掉.結果會是twothreedefault

[color=red]而c#要你強制性使用break[/color],不用的話在編譯時就會報錯.這樣就不會犯c++中因忘記寫break而出現的錯誤.

補充:其實也可以用return替換break.只不過return是表示退出整個函式,而break只是退出switch這個語句塊.

如果switch的語句塊中的邏輯比較複雜還可以綜合使用goto語句.

比如

int num = 2;

bool check = false;

switch (num)

當然很多很多人都說過在寫**時盡量另用goto語句,不得萬不得已少用了.

static在C 中的一些用法

static是與auto相對的乙個關鍵字,我們平時沒有用static修飾的變數,都是預設為auto的。所以要理解static,就先看看auto。auto automatic 的含義是由程式自動控制變數的生存週期,通常指的就是變數在進入其作用域的時候被分配記憶體,離開其作用域的時候被釋放 而stati...

自己在C 中的一些錯誤

cin 學生的成績為 stu.score 分析 在c 中cin是作為輸入流進行使用,他是將敲在鍵盤上的值賦值cin後面的變數,而學生的成績為常量,不能被賦值.淺拷貝問題主要是由於在c 的類中為指標資料成員申請了一塊動態空間,這時候如果直接呼叫預設的拷貝建構函式初始化乙個物件,會發生兩個物件的指標指向...

C 與C的一些知識

cout 其中的cou 是outstream 類的乙個物件 而 是這個類的運算子過載,嗯,我們已經基本上看出了cout的實質,不妨動動手,自己來實現乙個cout的簡化版 lite 為了區分,我們把我們設計的cout物件命名的myout,myout物件所屬的類為myoutstream。我們要做的就是為...